Как сделать шаг назад в цикле foreach? - PullRequest
0 голосов
/ 26 апреля 2011

Как мне сделать шаг назад в цикле foreach?Скажем, у меня есть что-то вроде этого:

Сделайте что-нибудь для первого запуска.Если b == 1, сделайте что-нибудь еще раз.См. Код ниже.

$i = 0;
foreach ($a as $b) {
  if ($i == 0) {
     //something
  }
  if ($b == '1') {
    $i = 0;
  }
  $i++;
}

Проблема в том, что, когда $ b == 1, он устанавливает $ i = 0, но не выполняет инструкции внутри.Есть ли лучший способ преодолеть это, если невозможно сделать шаг назад?

Обновление: спасибо, ребята, за ответ.Извините, я не понял, когда набрал это.

Но мне удалось добиться того, чего я хочу, поместив цикл в функцию, выполняя некоторые условные проверки и передавая аргументы перед вызовом.

Ответы [ 2 ]

2 голосов
/ 26 апреля 2011

Не уверен, что это опечатка, но у вас есть if ($ i = 0) вместо if ($ i == 0).Возможно, ваша проблема здесь?

Возможно, другой вариант будет просто делать:

if ($b == '1') {
    // do something?
}

Окончательный вариант - сделать регулярное выражение для цикла и уменьшить счетчик, если существует условие:

for ($x = 0; $x < count($thing); $x++) {
    if($thing[$x] == '1') {
        $x -= 1;
    }
}
0 голосов
/ 26 апреля 2011

Вы уверены, что $ i в цикле получает значение 0, вполне возможно, что это всегда 0 (потому что это то, что установлено до цикла)

...