Menu

PHP mehrdimensionale Arrays: verschachtelt und Schleifen

Ein mehrdimensionales Array in PHP ist ein Array, dessen Elemente Arrays sind, gelesen mit einer Klammer pro Ebene: $grid[1][2] oder $users[0]['name']. Hier: verschachtelte Arrays erstellen, tiefe Werte lesen und ändern, mit verschachteltem foreach iterieren, eine HTML-Tabelle bauen, eine Spalte herausziehen und Zeilen sortieren.

Diese Seite enthält ausführbare Editoren - bearbeiten, ausführen und Ausgabe sofort sehen.

Ein mehrdimensionales Array ist ein Array, dessen Elemente Arrays sind. Du liest es mit einem Klammerpaar pro Ebene: $grid[1][2] ist Zeile 1, Spalte 2, und $users[0]['name'] ist der Name im ersten Datensatz.

Die zweite Form, eine Liste von Datensätzen mit benannten Feldern, begegnet dir am häufigsten: Das liefert dir meist eine Datenbankabfrage, eine dekodierte JSON-Antwort oder eine eingelesene CSV-Datei. Jeder Datensatz ist ein assoziatives Array.

Verschachtelte Arrays erstellen

Die Verschachtelung kann so tief gehen, wie du brauchst, und die Ebenen können numerische und String-Schlüssel mischen. Ein Konfigurations-Array ist ein typisches Beispiel: benannte Abschnitte, die jeweils Einstellungen oder Listen enthalten.

Zeilen und verschachtelte Werte hinzufügen

$rows[] = [...] hängt eine ganze Zeile an. $arr['key'][] = $value hängt in einer verschachtelten Liste an, und PHP erzeugt das innere Array beim ersten Mal, also braucht das Gruppieren von Werten keine Vorbereitung.

Ein mehrdimensionales Array durchlaufen

Verwende ein foreach pro Ebene. Bei einer Liste von Datensätzen reicht meist eine Schleife, weil du die Felder über ihren Namen liest. Bei einem Raster läuft die innere Schleife über die Zellen jeder Zeile.

Eine HTML-Tabelle aus einem Array bauen

Ein Array von Zeilen passt direkt auf eine HTML-Tabelle: Die Schlüssel der ersten Zeile werden zur Kopfzeile, und jede Zeile wird zu einem <tr>. Führe es aus, und der Tab Page zeigt die gerenderte Tabelle; ändere einen Wert oder füge eine Zeile hinzu und führe es erneut aus.

Die Form foreach (...): ... endforeach; ist dieselbe Schleife, für Templates geschrieben, damit das HTML lesbar bleibt.

Eine Spalte aus allen Zeilen holen

array_column() zieht ein Feld aus jeder Zeile in eine flache Liste. Übergib ein drittes Argument, um das Ergebnis nach einem anderen Feld zu schlüsseln, und aus einer Liste von Datensätzen wird eine Nachschlagetabelle.

Zeilen nach einem Feld sortieren

usort() sortiert die Zeilen mit einer Vergleichsfunktion. Der Spaceship-Operator <=> liefert -1, 0 oder 1, genau das, was usort() erwartet. Vertausche $a und $b, um absteigend zu sortieren.

count($players, COUNT_RECURSIVE) zählt die 3 Zeilen plus die 6 Felder darin, deshalb gibt es 9 aus.

Typischer Fehler: einen tiefen Schlüssel lesen, der fehlen könnte

$config['cache']['ttl'] zu lesen, wenn es keinen Schlüssel cache gibt, gibt Warning: Undefined array key "cache" aus, gefolgt von Warning: Trying to access array offset on null für die nächste Ebene. Der Operator ?? prüft die ganze Kette auf einmal und warnt nie, ist also der sichere Weg, optionale verschachtelte Werte zu lesen.

Häufig gestellte Fragen

Wie greife ich in PHP auf einen Wert in einem mehrdimensionalen Array zu?

Füge pro Ebene ein Klammerpaar hinzu: $matrix[1][0] ist Zeile 1, Spalte 0, und $users[0]['email'] ist die E-Mail des ersten Nutzers. Jede Klammer liest aus dem Array, das die vorherige geliefert hat.

Wie durchlaufe ich in PHP ein mehrdimensionales Array?

Verschachtle ein foreach pro Ebene: foreach ($rows as $row) { foreach ($row as $key => $value) { ... } }. Bei einem Array von Datensätzen brauchst du meist nur eine Schleife und liest die Felder über ihren Namen: $row['name'].

Wie füge ich einem mehrdimensionalen Array ein Element hinzu?

Häng eine ganze Zeile mit $rows[] = ['name' => 'Linus', 'age' => 54]; an oder häng mit $groups['admins'][] = 'Grace'; in ein verschachteltes Array an. PHP erzeugt das innere Array, wenn der Schlüssel noch nicht existiert.

Wie erstelle ich in PHP ein 2D-Array voller Nullen?

Verschachtle zwei Aufrufe von array_fill(): $grid = array_fill(0, 3, array_fill(0, 4, 0)); ergibt 3 Zeilen mit je 4 Nullen. Jede Zeile ist eine eigene Kopie, also ändert $grid[0][0] = 5; nur die erste Zeile.

Illustration der Programmiersprachen bei Coddy

Lerne mit Coddy zu programmieren

LOS GEHT'S