PHP взорвался - прогон цикла через каждый элемент массива

Вот проблема:

Я получаю следующую строку данных из моей базы данных:

$row->exceptions = '1,2,3';

После explode мне нужен приведенный ниже код для проверки каждой из взорванных частей.

$exceptions = explode(",", $row->exceptions);

//result is 
//[0] => 1
//[1] => 2
//[2] => 3

for ($i = 0; $i <= $row->frequency; $i++) {

    if ($exceptions[] == $i) {

        continue;

    } else {

        //do something else
    }
}

Как я могу сделать цикл $exceptions[] по всем ключам из разнесенного массива, чтобы он оценивал, если ==$i?

Спасибо за помощь.


person pepe    schedule 08.05.2011    source источник
comment
возможный дубликат Найти значение в массиве   -  person Ignacio Vazquez-Abrams    schedule 08.05.2011
comment
не уверен в этом - здесь мне нужно решение не для поиска конкретного ключа, а для перебора всех ключей   -  person pepe    schedule 08.05.2011
comment
Я не уверен, что понял ваш вопрос, поэтому отправляю комментарий: если я его понял, достаточно заменить if($exceptions[] == $i) на if(in_array($i,$exceptions) ).   -  person Paolo Stefan    schedule 08.05.2011
comment
@paolo, это элегантное решение и прекрасно работает - не могли бы вы опубликовать его как ответ? - спасибо   -  person pepe    schedule 08.05.2011


Ответы (3)


Достаточно заменить:

if($exceptions[] == $i)

с:

if(in_array($i,$exceptions))

Кстати, это устраняет необходимость во вложенных циклах.

person Paolo Stefan    schedule 08.05.2011

Ах, должно быть прямо, нет?

$exceptions = explode(",", $row->exceptions);
for ($i = 0; $i <= $row->frequency; $i++) {

    foreach($exceptions as $j){
    if($j == $i){
        // do something
        break;
    }
}
}
person Femi    schedule 08.05.2011
comment
Рад помочь: in_array более элегантный. Нет причин не использовать функции платформы, если они доступны и подходят для поставленной задачи. - person Femi; 08.05.2011

Кажется, я понимаю, о чем вы спрашиваете. Вот как вы могли бы проверить в этом цикле, равен ли ключ $i.

for ($i = 0; $i <= $row->frequency; $i++)
{
  foreach ($exceptions as $key => $value)
  {
    if ($key == $i)
    {
      continue;
    }
  }
}
person James Skidmore    schedule 08.05.2011