[nycphp-talk] Array Reference Strangeness
Michael B Allen
mba2000 at ioplex.com
Mon May 28 00:20:01 EDT 2007
Hey,
I'm having trouble with array references.
Consider the following code:
#!/usr/bin/php -q
<?php
$top = array();
for ($i = 0; $i < 3; $i++) {
$arr = array("a$i");
$top[] = &$arr;
$arr["key$i"] = "val$i";
}
print_r($top);
?>
I want to be able to update elements in $arr after it has been added to
$top. However, the assignment appears to make a copy (adding elements to
$arr are not in the $arr added to $top). So I thought perhaps I need to
assign $arr to $top by reference with '&'. However this yields strange
behavior. Even though I feel like I'm creating a new $arr with each
iteration of the loop, the reference has not changed in $top. Elements
are updated in $arr within $top but it seems there is only one $arr.
The output shows that the keys and values added are all the same:
$ ./test.php
Array
(
[0] => Array
(
[0] => a2
[key2] => val2
)
[1] => Array
(
[0] => a2
[key2] => val2
)
[2] => Array
(
[0] => a2
[key2] => val2
)
)
The behavior I want would yield:
Array
(
[0] => Array
(
[0] => a0
[key0] => val0
)
[1] => Array
(
[0] => a1
[key1] => val1
)
[2] => Array
(
[0] => a2
[key2] => val2
What's the problem?
Mike
--
Michael B Allen
PHP Active Directory Kerberos SSO
http://www.ioplex.com/
More information about the talk
mailing list