Re: Re: reference variables
| From: | Ashley Sheridan | Date: | Fri, 22 May 2009 13:25:53 +0000 |
| Subject: | Re: Re: reference variables | ||
| References: | 1 2 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-292942@lists.php.net to get a copy of this message | ||
On Fri, 2009-05-22 at 07:44 -0500, Shawn McKenzie wrote:
> kranthi wrote:
> > i have this script
> >
> > <?php
> > $x = 1;
> > $y = 2;
> > $a1 = array(&$x, &$y);
> > $a2 = array($x, $y);
> > $a2[0] = 3;
> > print_r($a1);
> > print_r($a2);
> > ?>
> >
> > i am expecting
> >
> > Array
> > (
> > [0] => 3
> > [1] => 2
> > )
> > Array
> > (
> > [0] => 3
> > [1] => 2
> > )
> >
> >
> > while i m getting
> >
> > Array
> > (
> > [0] => 1
> > [1] => 2
> > )
> > Array
> > (
> > [0] => 3
> > [1] => 2
> > )
> >
> >
> > any ideas why this is happening?? or am i missing something..?
> > the same is the case when i replace
> > $a2[0] = 3; with
> > $a1[0] = 3;
> > $x = 3;
> >
> > Kranthi.
> >
>
> $a2[0] was assigned the value of $x or 1, so when you change $a2[0],
> that's all that changes. You have changed the value 1 to 3. $a1[0] is a
> reference to $x, so if you change $a1[0] it will change $x, but not
> $a2[0] because it is not a reference to $x.
>
> --
> Thanks!
> -Shawn
> http://www.spidean.com
>
To get the results you expect, you should remove the & from the
assignment, as this is assigning by reference, rather than by value like
Shawn said, or use an & for $a2 as well.
Ash
www.ashleysheridan.co.uk