Hi, Karoly Negyesi a écrit :
> > 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? > When copying an array containing a reference, the reference is keeped. : $value = 'foo'; $array = array (&$value); $array2 = $array; $array2[0] = 'bar'; echo $array[0]; // bar Here, the &string(3) means that it's referenced. Indeed, $throwaway contains a reference to it. change your f1 to this : function f1() { global $a; $array = array(); $throwaway = f3($array); unset($throwaway); var_dump($a); } And the "&" will obviously disappear, as the reference no longer exists. Kind regards -- Etienne Kneuss http://www.colder.ch/ [EMAIL PROTECTED] -- Etienne Kneuss http://www.colder.ch/ [EMAIL PROTECTED] -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php