Assign by reference...
| From: | Benjamin Berman | Date: | Tue, 13 Jun 2000 02:01:08 +0000 |
| Subject: | Assign by reference... | ||
| Groups: | php.general | ||
| Request: | Send a blank email to php-general+get-1678@lists.php.net to get a copy of this message | ||
I'm having a problem with the new assign by reference feature in PHP4.
Consider the following code; it's an artificial example that takes an
array of numbers, for instance (1,2,3) and transforms it into an array
of arrays, where each array contains multiples of the original number,
for instance ((1,10,100), (2,20,200), (3, 30, 300)). Here is the code:
1 $num_arr = array(1, 2, 3);
2 $multiples_arr = array();
3 while (list($key, $val) = each($num_arr))
4 {
5 $mult_arr = array($val, $val*10, $val*100);
6 $multiples_arr[] = &$mult_arr;
7 }
8
9 while (list($key, $mult_arr) = each($multiples_arr))
10 {
11 print join(",",$mult_arr)."<BR>\n";
12 }
I would expect to get the output:
1,10,100
2,20,200
3,30,300
But instead, I get the following:
3,30,300
3,30,300
3,30,300
This is counter-intuitive with respect to other programming languages
I've used. I can guess what's happening underneath to make PHP display
this behavior, but it still seems to contradict my notion of what
"assignment by reference" means. Is there any way to get PHP to do what
I want it to do here?
Thanks,
ben.