Возврат из цикла, но выполнение цикла не влияет?

Это возможно в 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, поэтому любая помощь или идеи будут высоко оценены?

1

Решение

На самом деле вы можете. То, что вы ищете, является эквивалентом 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
1

Другие решения

Возврат в качестве контрольных структур return может использоваться в функции (процедурной) или методе (объектно-ориентированной) для возврата значения, но это необязательно. Если у вас есть петля while, for foreach и т. д. и вы используете return в пределах, чем это вернет значение вызывающему модулю и остановит цикл.

Но есть способы сделать цикл и вернуть его в статический объект или глобальную переменную.

0

По вопросам рекламы [email protected]