Re: strange reference behavior

From: Date: Sat, 01 Sep 2007 13:58:30 +0000
Subject: Re: strange reference behavior
References: 1  Groups: php.general 
Request: Send a blank email to php-general+get-261591@lists.php.net to get a copy of this message
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! ...........................................................

« previous php.general (#261591) next »