I eine Funktion haben, die sich auf ein Array zurück (globals werden der Einfachheit halber verwendet, tatsächlich diese Arrays sind Elemente einiger großer Baumstruktur):PHP append Array zu Array-Referenz
$array1;
$array2;
function &foo($arg){
//deduce from $arg reference to which array should be returned
if(...) {
global $array1;
return $array1;
} else {
global $array2;
return $array2;
}
}
Dann muss ich append eine andere Anordnung zu der mit dieser Funktion zurück (so dass die anfängliche Array geändert wurde):
$arrayToAppend = array('a','b');
$arrayToChange = &foo($arg);
$arrayToChange = array_merge($arrayToChange, $arrayToAppend);
Ist es richtige Syntax für das, was ich tun will? Ändert es das referenzierte Array? Gibt es irgendwelche Fallstricke, die ich wissen sollte? (Fallstricke über Nachschlagewerke, nicht über Verschmelzen von assoziativen Arrays usw.)
Ich möchte keinen Parameter innerhalb Funktion ändern. Funktion ist nur verantwortlich für "Auswahl" Array und Rückkehr Verweis darauf. –
Ich verstehe jetzt, was Sie wollen. Basierend auf einer Bedingung, die Sie die Referenz (Zeiger) von der Funktion zurückgegeben werden soll. Ich denke, was Sie tun, ist richtig. Ich bezweifle Sie gewinnen Sie viel, indem Sie nur die Referenz zurückgeben.Sie könnten einfach das Array zurückgeben, was die meiste Zeit erledigt ist.Sie sorgen sich um Speicherverbrauch oder Geschwindigkeit? – RWC
Nein, die Sache ist, dass ich das tatsächliche Array ändern muss, das ein Teil des großen Baumes ist Struktur von solchen Arrays Die Funktion 'foo ($ arg)' ist eine Finder-Funktion (welches Array zu ändern ist), die für viele mögliche sich ändernde Operationen wiederverwendet wird. –