Wie in php funktion mehrere arrays zurückgeben?
ich habe eine Funktion, in dieser werden arrays erstellt und befüllt allerdings kann ich über return nur eine variable bzw. array zurückgeben, kann ich die arrays global machen oder so dass ich sie auch hinterher nutzen kann?
2 Antworten
Da gibt es verschiedenen Wege. Zum einen kannst du einfach ein Array mit weiteren Arrays zurückgeben:
function test1() {
return [
["foo", "bar", "hello"],
[1, 2, 3, 4, 42],
];
}
$var1 = test1();
echo $var1[0][2].$var1[1][4]; // hello42
Den Rückgabewert kannst du übrigens auch gleich in verschiedene Variablen packen:
[$arr1, $arr2] = test1();
echo $arr1[2].$arr2[4]; // hello42
Ich selbst bevorzuge hier eine abgewandelte Form mit Objekten, da sich das besser lesen lässt:
function test2() {
return (object)[
'strings' => ["foo", "bar", "hello"],
'numbers' => [1, 2, 3, 4, 42],
];
}
$var2 = test2();
echo $var2->strings[2].$var2->numbers[4]; // hello42
Also was an einen Array komplex sein soll, erschießt sich mir nicht. Hier noch mal ein ganz einfaches Beispiel:
function multiarray() {
$arr1 = ["foo", "bar", "hello"];
$arr2 = [1, 2, 3, 4, 42];
return [$arr1 , $arr2];
}
[$arr1, $arr2] = multiarray();
echo $arr1[2].$arr2[4];
Daran ist nichts kompliziert und nicht komplex.
Von der Übergaben von Referenzen würde ich jedoch generell abraten. Wenn Werte einer Funktion direkt in einer anderen Funktion geändert werden können, sind Fehler und langes Suchen vorprogrammiert.
geb ich dir recht mit den referenzen, ist eigentlich auch nur sinnvoll mit referenzen wenn es handles sind , da diese nicht kopiert werden können . ein db handle würde sich dann zerstören da es woanders hinzeigt .
einfach sammeln in einem anderen array . und dann wieder entpacken .
oder du arbeitest mit referenzen .
function tata( &$array1,&$array2,&$array3) {
$array1 ...
$array2 ....
$array3 ....
}
hmm das refernzieren funktioniert absolut nicht ich bekomme:
Warning: in_array() expects parameter 2 to be array, null given
Warning: array_push() expects parameter 1 to be array, null given
das array kann trotz dem & zeichen nicht in der funktion verwendet werden
ich sehe hier kein beispiel code von dir, also kann ich auch nichts dazu sagen , du musst auch arrays übergeben .
das sieht komplex aus
du scheinst dich sehr gut damit auszukennen, @TechPech1984 hat das Referenzieren vorgeschlagen, was denke ich vielleicht in diesem Fall eher anzuwenden ist, allerdings scheint es nicht zu funktionieren, geht das nur bei einfachen variablen oder so?