hallo forum,
ich habe folgendes script:
----- script --------------------------------------
<pre>
<?php
funktion zum testen ob zwei arrays auf
den selben inhalt referenzieren
function isSame($first,$second)
{
# das ich nach ..st['self'].. abfrage
# hat den hintergrund das ja eine kopie
# übergeben wird und somit auf dem ersten
# level keine instanz möglich wäre
$first['self']['uniqueName'] = true;
if(isset($second['self']['uniqueName']))
echo "same\n";
else
echo "NOT same\n";
unset($first['self']['uniqueName']);
}
recursives array erstellen
$array = array();
$array['self'] =& $array;
isSame($array,$array['self']);
beliebige referenz setzen
$foo =& $array;
isSame($array,$array['self']);
beliebige referenz wieder löschen
unset($foo);
isSame($array,$array['self']);
?>
</pre>
----- /script --------------------------------------
wenn ich dieses ausführe bekomme ich folgende ausgabe:
----- ausgabe --------------------------------------
NOT same
same
NOT same
----- /ausgabe --------------------------------------
meines erachtens sollte aber jedes mal "same" rauskommen(?)
wieso muss erst eine beliebige referenz bestehen damit es funzt? eigentlich sollte es da doch keinen zusammenhang geben?
getestet auf 4.3.3 und 5.0.0 beta 4 jeweils auf win32
ist das gewollt bzw. resultierend? und wenn woraus? ich komme nicht drauf ... wäre sehr dankbar wenn mir wer einen hinweis geben kann.
beste grüße - flufo