On Sat, 2007-09-01 at 13:06 +0300, Robert Enyedi wrote:
> Hi,
> 
> I've been studying the PHP reference mechanism (with PHP 5.2.1) and I'm 
> unsure if the following behavior is normal.
> 
> This code works as expected:
> 
>       $a = 2;
>       $b = &$a;
>       //$c = &$a;
>       $c = $b;
>       $a = 1;
> 
>       echo $c."\n"; // Prints "2" as expected
> 
> but this one does not:
> 
>       $a = 2;
>       $b = &$a;
>       $c = &$a;
>       $c = $b; // Should overwrite the previous assignment, so $c
>                // should get a copy of $b (and NOT a reference)
>       $a = 1;
>       
>       echo $c."\n"; // I would expect "2", but prints "1"
> 
> Could anyone please clarify why this happens?

Sure...


1: $a = 2;
2: $b = &$a;
3: $c = &$a;
4: $c = $b;   // Should overwrite the previous assignment, so $c
5:            // should get a copy of $b (and NOT a reference)
6: $a = 1;
7:
8: echo $c."\n"; // I would expect "2", but prints "1"

By line number...

1: Assign 2 to a variable called $a
2: Assign to $b a reference to $a
3: Assign to $c a reference to $a
4: Assign the value of $b to $c
   (this does NOT break $c's reference to $a)
6: Assign the value 1 to $a
   ($a is currently referenced by $b and $c)
8: Echo $c which should be 1. You will get the same result
   in PHP4

Cheers,
Rob.
-- 
...........................................................
SwarmBuy.com - http://www.swarmbuy.com

    Leveraging the buying power of the masses!
...........................................................

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to