PHP Array in Array speichern?

Dsimon24

Lieutenant
Registriert
Aug. 2016
Beiträge
595
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?
 
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
 
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
 
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:
Wenn die Info zur Bank auch in der Datenbank gespeichert ist, dann wäre es vermutlich das sinnvollste, die Query anzupassen.
 
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.
 
Zurück
Oben