Re: Strange action with =&

From: Date: Tue, 13 Feb 2007 04:53:51 +0000
Subject: Re: Strange action with =&
References: 1 2  Groups: php.db 
Request: Send a blank email to php-db+get-43069@lists.php.net to get a copy of this message
On Tue, 13 Feb 2007, bedul wrote:
sry i don't get what u mean??
I'm looping through an array and I did this:
     $rate =& $mydata[$prefix];
This is how you assign a variable by reference. $rate should be a reference to $mydata[$prefix], not a copy. If I change the value of $rate, the value of $mydata[$prefix] is also changed, and vice versa.
Now, in some cases $mydata[$prefix] wasn't set/defined, so I expected $rate to not be defined, or at least point to something that wasn't defined. Instead, PHP 5.1.6 set $mydata[$prefix] to nothing. If I had:
     $mydata[1] = 3;
     $mydata[3] = 2;
     $mydata[5] = 1;
And did a loop from $i=1; $i++; $i<=5 I'd get:
     $mydata[1] = 3;
     $mydata[2] = ;
     $mydata[3] = 2;
     $mydata[4] = ;
     $mydata[5] = 1;
the reason mydata2 empty was because it don't have value in it!! full source plz why u don't try this $txt.="<ol>"; foreach($mydata as $nm=>$val){ $txt.="\n<li> $nm = $val"; $txt2="<br>\$mydata[$nm] = $val"; } $txt.="</ol>"; print $txt;
Because I'm trying to point out a problem with PHP, where setting a reference when the other side is undefined or not set, PHP creates a reference to a previously non-existent array item, just by setting a reference. I don't think that should happen. Your code doesn't set anything by reference.
Is this expected? A bug? Fixed in 5.2.0? I know I shouldn't set a reference to a variable that doesn't exist, but the expected result is a warning/error, not for PHP to populate an array.
we should cross check again.
I don't know what you mean. ---------------------------------------------------------------------------
Peter Beckman                                                  Internet Guy
beckman@purplecow.com                             http://www.purplecow.com/
---------------------------------------------------------------------------

« previous php.db (#43069) next »