For me,

    foreach (range($low, $high) as $i)

is easier to understand than

    for ($i = 0; $i <= $high; $i++)

By easier to understand I do not only mean that the beginning of the loop marked by the foreach/range construct is easier to read. While reading the body of the loop I can be sure that $i is not unexpectedly modified, for instance.

Be that as it may, what I would like to propose should be useful for use cases other than the one (see above) that triggered me thinking about this.

range() returns an array that contains all elements requested. Depending on the amount of elements, this might not be optimal.

One of the most common usages of generators that I have seen is an alternative, userland implementation of the range() function:

    function xrange($start, $end, $step = 1) {
        for ($i = $start; $i <= $end; $i += $step) {
            yield $i;
        }
    }

This makes me wonder: would there be a benefit in changing the implementation of range() to return a generator instead of an array? And if so, would this constitute a break in backward compatibility?

--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to