PHP Array in Array speichern?

Dsimon24

Lt. Junior Grade
Dabei seit
Aug. 2016
Beiträge
287
Hallo,

leider kann ich im Internet keine passende Lösung
finden - vielleicht suche ich auch nur was falsch -
aber vielleicht kann mir einer weiterhelfen!?

Ich habe drei Arrays:
$arr_eins & $arr_zwei & $arr_drei

Jetzt möchte ich:
$arr_eins in $xyz[0],
$arr_zwei in $xyz[1],
$arr_drei in $xyz[2] speichern

Wie mache ich das? Durch eine Zuweisung -> $xyz[0] = $arr_eins
komme ich nicht zum Ziel, da ich das Array darin nicht ausgeben
kann - oder mache ich was falsch?
 

Yuuri

Fleet Admiral
Dabei seit
Okt. 2010
Beiträge
12.094
Code:
<?php

$arr1 = [1,2,3];
$arr2 = [4,5,6];
$arr3 = [7,8,9];

$total = [$arr1,$arr2,$arr3];

var_dump( $total );

$total[0] = $arr3;
$total[1] = $arr1;
$total[2] = $arr2;

var_dump( $total );
https://3v4l.org/3LFYZ
 

Digitalzombie

Lt. Junior Grade
Dabei seit
Juni 2011
Beiträge
330
Ich glaube du suchst nach multidimensionalen Arrays.

$xyz[0][0] = $arr_eins[0]
$xyz[0][1] = $arr_eins[1]
$xyz[0][2] = $arr_eins[2]
...
$xyz[1][0] = $arr_zwei[0]
$xyz[1][1] = $arr_zwei[1]
$xyz[1][2] = $arr_zwei[2]
... etc
 

Dsimon24

Lt. Junior Grade
Ersteller dieses Themas
Dabei seit
Aug. 2016
Beiträge
287
Ich merke gerade, ich scheine falsch vorzugehen.
Anbei mal mein Vorhaben im Detail - vielleicht
gibt es da andere Lösungswege..

Ich rufe via Laravel eine Query auf:
$account_all = DB::table('konten')->where('uid', '=', 2)->get();
Somit erhalte ich eine Ausgabe aller Konten mit der UID 2.
Sind in der Summe bspw. zwei Stück.

Folgende Ausgabe erhalte ich:
[
{"id":7,"uid":2,"bezeichnung":"Testkonto","gruppe":2,"saldo":1595.95,"kat":0},
{"id":8,"uid":2,"bezeichnung":"Testkonto II","gruppe":1,"saldo":-1255.85,"kat":0}
]
Jetzt möchte ich jedem Datensatz in diesem Array noch einen
weiteren Wert hinzufügen. bspw. bank = x / bank = y.

Wie kann ich die Daten (über eine foreach-Schleife?) aufrufen,
einen Wert in den jeweiligen Array-Datensatz speichern?

Ich habe gehofft, ich könnte es anders lösen...

Edit: Ich denke, ich könnte es mittels 'array_push'
lösen. Aber wie komme ich in das jeweilige
Element des Arrays rein?
 
Zuletzt bearbeitet:

Andreas_

Lt. Commander
Dabei seit
Jan. 2017
Beiträge
1.241
Wenn die Info zur Bank auch in der Datenbank gespeichert ist, dann wäre es vermutlich das sinnvollste, die Query anzupassen.
 

NullPointer

Lt. Commander
Dabei seit
Okt. 2009
Beiträge
1.563
Das geht prinzipiell mit foreach, aber du musst beachten, dass die Variable, die dabei in jedem Schleifendurchlauf automatisch zugewiesen wird, nicht das gleiche Objekt ist wie das Array-Element, sondern eine Kopie. Wenn du also so etwas hast:

PHP:
foreach ($account_all as $account) {
  $account['bank'] = 'Postbank';
}
dann ist $account_all nachher unverändert, weil $account eben eine Kopie von $account_all[0] usw. ist und nicht damit identisch.

Es gibt mehrere Wege, das Problem zu lösen. Du kannst entweder explizit erzwingen, dass $account eine Referenz sein soll statt einer Kopie, indem du foreach ($account_all as &$account) schreibst. Oder du wechselst von foreach zu einer regulären for-Schleife:

PHP:
for ($i = 0; $i < count($account_all); ++$i) {
  $account_all[$i]['bank'] = 'Postbank';
}
Ansonsten ginge das auch mit array_map oder array_walk anstelle der Schleife, das würde ich aber nur etwas fortgeschritteneren Programmierern empfehlen.
 
Top