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