Es ist schwierig, in Wort zu erklären, was zu tun, ich versuche, so ein minimales Beispiel mir die Bereitstellung, siehe Kommentare:ändern Werte globale Array durch die von einer Funktion zurückReferenz Ändern
$g = array(
'a' => array(1, 2, 3),
'b' => array(4, 5, 6)
); // A global array
function &search($key) {
global $g;
return $g[$key];
}
$a = search('b'); // Now $a should be a reference to $g['b'], right?
$a[2] = 666;
print_r($a); // Ok changed
print_r($g); // Why not changed?
Getestet auf PHP 5.6.4.
Grund für das, was ich versuche, ist die Tatsache, dass die Suchfunktion in meinem Anwendungsfall (nicht nur eine Schlüsselindizierung!) Offensichtlich komplexer ist, und nachdem das Ergebnis gefunden wurde, ist es praktisch, an Ergebnissen zu arbeiten : Das ursprüngliche Array ist auf verschiedenen Ebenen geschachtelt.
Weil Sie von Wert sind Rückkehr nicht näher; Das Ändern des zurückgegebenen Werts ändert also nicht den globalen Wert –
@MarkBaker Warum sagen Sie, dass ich nach Wert zurückgebe? Sollte "& search" nicht als Referenz zurückgegeben werden? –