Что приводит к завершению цикла php foreach?

У меня были проблемы с одним из моих циклов foreach, где ЧАСТЬ цикла завершается всего после одной итерации без вывода или ошибки.

После поиска ответов в Интернете я до сих пор не знаю возможных причин этой проблемы (и код слишком велик, чтобы быть полезным для сообщества...)

Поэтому мой вопрос: «Каковы возможные причины завершения цикла foreach после одной итерации?» (при условии, что требуется больше итераций)


person user1973200    schedule 13.01.2013    source источник
comment
может быть, инструкция break.   -  person CoursesWeb    schedule 13.01.2013
comment
break, die и return могут полностью отменить foreach, continue может пропустить итерацию, но не нарушит цикл.   -  person Sammaye    schedule 13.01.2013
comment
"PART of the loop terminates after just one iteration" = Один элемент в массиве.   -  person vascowhite    schedule 13.01.2013
comment
@vascowhite (assuming more iterations are required)   -  person Sammaye    schedule 13.01.2013
comment
@Sammaye Это предположение может быть ошибочным, многие ошибаются.   -  person vascowhite    schedule 13.01.2013
comment
@ user1973200 с какой проблемой вы столкнулись? я сталкиваюсь с похожей проблемой.   -  person Moax6629    schedule 08.05.2015


Ответы (2)


Есть несколько способов остановить цикл foreach. Вот несколько примеров:

<?php
$range = range(1,10);

// continue;
foreach($range as $r){
    if($r!=1){
        continue;
    }
    echo $r.'<br>';
}

// break;
foreach($range as $r){
    if($r>1){
        break;
    }
    echo $r.'<br>';
}

// die;
foreach($range as $r){
    if($r>1){
        die;
    }
}

Примечание. continue не выйдет из цикла foreach, но может привести к «пропуску» строк данных.

person Samuel Cook    schedule 13.01.2013
comment
continue не завершает цикл, а переходит к следующему индексу. - person cryptic ツ; 13.01.2013
comment
да, я добавил это в самый низ. - person Samuel Cook; 13.01.2013

Он работает только с массивами и объектами и выдает ошибку, когда вы пытаетесь использовать его для переменной с другим типом данных или неинициализированной переменной.

Я думаю, что вам следует пройти по этой ссылке http://php.net/manual/en/control-structures.foreach.php для лучшего понимания цикла foreach.

person Ajay Nigam    schedule 13.01.2013
comment
Если бы он столкнулся с этим, то foreach выдал бы фатальную ошибку и даже не пошел бы на первую итерацию. - person Sammaye; 13.01.2013