Ich versuche, eine Referenz in einer Funktion festzulegen. Aber ich kann das nicht funktionieren.Wie stelle ich eine Referenz innerhalb der PHP-Funktion ein?
Code I versucht:
function set(&$x, &$y)
{
$x =& $y[2];
}
$y = array(
0,
1,
array('something')
);
$x = array('old_val');
print "1. inited, x is:\n";
print_r($x);
set($x, $y);
print "\n2. now, x is: ";
print_r($x);
Ausgang:
1. inited, x is:
Array
(
[0] => old_val
)
2. now, x is: Array
(
[0] => old_val
)
ich den Wert von $ x erwarte als $ y gleich sein [2]. Außerdem sollte jede weitere Änderung an $ x $ y ändern [2]. (Wie in Zeigerzuweisung in C: x = &y[2];
) Was mache ich falsch? Irgendwelche Vorschläge geschätzt.
Edit: eigentlich ist die Funktion set() im Test-Code eine vereinfachte für meine Testzwecke. Es ist tatsächlich select_node (& $ x, & $ tree, $ selector): Dies wird einen Knoten aus dem Baum auswählen, der $ selector entspricht und ihn $ x zuweist.
Ok , sehr merkwürdig. Es funktioniert, wenn Sie $ x innerhalb der Funktion etwas zuweisen (es setzt es zurück in das Array und es wird außerhalb der Funktion gesetzt), aber es funktioniert nicht umgekehrt ... hmmm. –