Re: strange reference behavior
| From: | Robert Cummings | 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!
...........................................................