Это возможно в php, когда возвращают некоторое значение из цикла и выполнение цикла все еще продолжается со следующего индекса (например, GetEnumerator () в C # и использование MoveNext ())
проблемно
$arr=[0,1,5,9,5];
$i=count($arr);
while($i>0){
// data base operations
$_GLOBALS['i']=$_GLOBALS['i']-1;
//return some value;
}
Я программист на C # и новичок в php, поэтому любая помощь или идеи будут высоко оценены?
На самом деле вы можете. То, что вы ищете, является эквивалентом yield
Ключевое слово из C #. Согласно PHP документация, то же самое ключевое слово может использоваться в php для реализации генератора.
На странице документации есть небольшой пример:
function gen_one_to_three() { for ($i = 1; $i <= 3; $i++) { // Note that $i is preserved between yields. yield $i; } } $generator = gen_one_to_three(); foreach ($generator as $value) { echo "$value\n"; }
Приведенный выше пример выведет:
1 2 3
Возврат в качестве контрольных структур return
может использоваться в функции (процедурной) или методе (объектно-ориентированной) для возврата значения, но это необязательно. Если у вас есть петля while
, for
foreach
и т. д. и вы используете return
в пределах, чем это вернет значение вызывающему модулю и остановит цикл.
Но есть способы сделать цикл и вернуть его в статический объект или глобальную переменную.