2012/3/15 Nikita Popov <nikita....@googlemail.com>:
> If I am understanding the text correctly it is saying that
>    $f1 = f1();
>    $f2 = f2($f1);
>    $f3 = f3($f2);
> is using more memory than
>    $f3 = f3(f2(f1()));
>
> For me this doesn't make any sense. In the latter case PHP will also
> create temporary variables to store the return values. There should be
> no difference in memory consumption.

It does make sense to me.

In the first case, when calling f3(), $f1 is still referenced.
In the second case, when calling f3(), the result of f2() is
referenced, but there is no more active reference to the result of
f1().

Regarding the original problem:
foreach($a as $key => $val) {
    $a[$key] = someLong(functionCalls(hereThat($spanOver85Chars)));
}

Sounds easier to split over lines without temporary zvals:
foreach($a as $key => $val) {
    $a[$key] = someLong(
        functionCalls(
            hereThat(
                $spanOver85Chars
            )
        )
    );
}

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

Reply via email to