Hi!
Without much ado, here is a piece of problematic code:
<?php
ini_set('error_report', E_ALL);
function f1() {
global $a;
$array = array();
$throwaway = f3($array);
var_dump($a);
}
function f2() {
global $a;
$array = array();
f3($array);
var_dump($a);
}
function f3($array) {
global $a;
$array[0] = &$a;
$array[0] = &$array[0]['foo']; // no notice here. interesting.
$array[0] = 'bar';
return $array;
}
$a = array();
f1();
$a = array();
f2();
?>
Please note that the only difference between f1 and f2 that the first
records the return value of f3() into a variable. However, this changes
the output:
array(1) {
["foo"]=>
&string(3) "bar"
}
array(1) {
["foo"]=>
string(3) "bar"
}
Is this a bug? Or I miss something?
Thanks
Karoly Negyesi
Ps. There is a good reason for using such ugly reference magic, and I am
happy to explain it to anyone who is interested, but it's a long story...
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php