Wie in php funktion mehrere arrays zurückgeben?

2 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet

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
Woher ich das weiß:Berufserfahrung – Entwickle Webseiten seit über 25 Jahren.

Mensch4 
Beitragsersteller
 08.07.2022, 20:02

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?

Babelfish  08.07.2022, 20:07
@Mensch4

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.

TechPech1984  08.07.2022, 20:13
@Babelfish

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 ....
}

Mensch4 
Beitragsersteller
 08.07.2022, 19:26

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

TechPech1984  08.07.2022, 20:10
@Mensch4

ich sehe hier kein beispiel code von dir, also kann ich auch nichts dazu sagen , du musst auch arrays übergeben .