Stealth Generator¶
<?php
function foo(): iterable {
return ['a'];
yield 'b';
}
foreach(foo() as $v) {
echo $v;
}
The code below has a useless loop. The presence of the yield keyword in the function body makes it a generator. As such, foreach() will react to yield calls, though the function returns immediately, without a yield. Hence, the empty loop, even though the function returns an array: indeed, to have the function behave as expected, it is necessary to remove the unreachable yield call, and then, the foreach() can use the return for the loop.
See Also¶
stealth generator [Try me]
PHP Features¶
Last updated: 14 July 2026