> But $filteredArrayIterator->next() is actually $arrayIterator->next() with
> a built-in if check, so you could also picture it as doing this:
>
> while ( $element = $arrayIterator->nextIf ( someCondition ) ) {
> $newArray[] = $element;
> }
>
In this case nextIf() would have to be implemented something like:
function nextif($someCondition) {
foreach($this->iteratorValue as $x) {
if(<some comparison of $x and $$someCondition) {
yield $x;
}
}
}
iterator_to_array would need an internal loop to pull the values from
the generator. Thus, as far as I can see, the generator implementation
would result in two loops running in lock step, rather than only one
in the eager case.
You do make a good point about the potential for the optimiser to
recognise and automatically deal with such cases however.
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php