On Thu, 15 Sep 2005, Todd Ruth wrote:

> Aha!  That was the inspiration I needed to get the right
> combination of "&"s.  The following bit of code behaves
> differently under 4.3 vs 4.4:
> 
> <?php
> function f(&$a) { return $a; }
> $x = array('a','b','c');
> foreach (array_keys($x) as $k) {
>    // I think the following line disconnects $y in 4.3
>    // but leaves $y connected in 4.4
>    $y =& f($x[$k]);
>    $z[] =& $y;
> }
> var_dump($x);
> var_dump($z);
> ?>
> 
> My guess would be that in 4.3 the engine tries to do the
> reference even though it may be dangerous.  That would
> "disconnect" $y from the previous $z[].  4.4 knows the
> reference is impossible and leaves $y connected to the
> previous $z[].  Is that analysis correct, engine gurus?

Yes, it is. This has bitten me too a couple of times. But ofcourse, the 
new behavior *is* the correct one.

Derick

-- 
Derick Rethans
http://derickrethans.nl | http://ez.no | http://xdebug.org

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

Reply via email to