PHP: Mehrdimensionale Arrays
Erste Schritte: PHP: Mehrdimensionale Arrays
Neben einfachen und assoziativen Arrays bietet dir PHP die Möglichkeit,
mehrdimensionale Arrays zu verwenden. In einem mehrdimensionalen Array
kann jedes Element wiederum ein eigenes Array sein – so kannst du zum Beispiel
Tabellen, Listen von Listen oder verschachtelte Datenstrukturen abbilden.
In diesem Tutorial lernst du, wie du mehrdimensionale Arrays anlegst,
darauf zugreifst und sie durchläufst.
1. Was ist ein mehrdimensionales Array?
Ein mehrdimensionales Array ist nichts anderes als ein Array,
in dem mindestens eines der Elemente selbst wieder ein Array ist.
So kannst du zwei-, drei- oder n-dimensionale Strukturen schaffen,
zum Beispiel:
$zahlen2D = [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ];
Dies ist ein zweidimensionales Array, das man sich wie eine kleine Matrix vorstellen kann.
Für den Zugriff auf ein Element brauchst du dann zwei Indizes:
echo $zahlen2D[0][1]; // 2
(Index 0 gibt die erste „Zeile“, Index 1 daraus das zweite Element.)
2. Zweidimensionale Arrays
2.1 Beispiel eines 2D-Arrays
<?php $tab = [ ["Name" => "Lisa", "Alter" => 20], ["Name" => "Max", "Alter" => 25], ["Name" => "Anna", "Alter" => 22] ]; // Zugriff auf "Alter" im zweiten Eintrag echo $tab[1]["Alter"]; // 25 ?>
Hier hat jedes Element (
$tab[0]
,
$tab[1]
,
$tab[2]
) selbst
das Format eines assoziativen Arrays mit Keys „Name“ und „Alter“.
So kannst du eine Art Tabelle abbilden, in der jede Zeile eine Person repräsentiert.
2.2 Durchlaufen mit Schleifen
Um alle Daten auszugeben, kannst du Schleifen verschachteln oder foreach einsetzen:
<?php foreach ($tab as $index => $person) { echo "Index $index: "; echo $person["Name"] . " ist " . $person["Alter"] . " Jahre alt.<br>"; } ?>
So greifst du erst auf die „Zeilen“ ($person) zu und anschließend auf die
gewünschten Keys innerhalb jeder Zeile.
3. Dreidimensionale Arrays
Bei einem 3D-Array ist ein Element in einem zweidimensionalen Array selbst wieder ein Array.
Ein Beispiel könnte eine Struktur sein, in der du pro Monat eine Tabelle hast,
und jede Zeile eine Kategorie mit Werten auflistet:
$umsatz = [ "Jan" => [ ["Kategorie" => "Getränke", "Summe" => 200], ["Kategorie" => "Essen", "Summe" => 350] ], "Feb" => [ ["Kategorie" => "Getränke", "Summe" => 180], ["Kategorie" => "Essen", "Summe" => 400] ] ];
Hier wäre
$umsatz["Jan"]
ein zweidimensionales Array,
und du kannst dann $umsatz[„Jan“][0][„Summe“] auslesen (=> 200).
4. Verschachtelte Schleifen
Möchtest du alle Daten eines mehrdimensionalen Arrays ausgeben, verwendest du
verschachtelte Schleifen. Im Beispiel eines 2D-Arrays (Matrix):
<?php $matrix = [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ]; // Zwei verschachtelte for-Schleifen for ($i = 0; $i < count($matrix); $i++) { for ($j = 0; $j < count($matrix[$i]); $j++) { echo $matrix[$i][$j] . " "; } echo "<br>"; } ?>
Ergebnis:
1 2 3
4 5 6
7 8 9
5. Tipps zur Strukturierung
- Geordnete Daten: Überlege genau, ob ein mehrdimensionales Array nötig ist,
oder ob du nicht lieber Objekte bzw. Klassen nutzen möchtest. - Sinnvolle Keys: Bei komplexen Strukturen kann es sich lohnen,
assoziative Keys zu verwenden, damit der Code sprechend bleibt. - Funktions-Aufteilung: Wenn du häufig mit mehrdimensionalen Arrays arbeitest,
verfasse Hilfsfunktionen, um z. B. einen Teil abzufragen oder bestimmte Berechnungen durchzuführen.
6. Umwandlung und Ausgabe
Manchmal willst du den gesamten Inhalt eines mehrdimensionalen Arrays auf einen Blick sehen.
Dafür eignet sich
print_r()
oder
var_dump()
(umfassender):
<?php print_r($umsatz); ?>
So bekommst du die verschachtelte Struktur im Klartext ausgegeben.
Für eine tabellarische Darstellung musst du i. d. R. eine Schleife benutzen,
die die Daten Zeile für Zeile in HTML-Tabellen ausgibt.
7. Beispiel: Produktkategorien
<?php $produkte = [ "Obst" => ["Apfel", "Banane", "Orange"], "Gemuese" => ["Karotte", "Tomate"] ]; foreach ($produkte as $kategorie => $liste) { echo "<h3>$kategorie</h3>"; echo "<ul>"; foreach ($liste as $produkt) { echo "<li>$produkt</li>"; } echo "</ul>"; } ?>
In diesem Beispiel sind die Keys „Obst“ und „Gemuese“
jeweils mit einem Array von Items verknüpft.
Beim Durchlauf erzeugt der Code Überschriften für die Kategorie
und eine Liste der einzelnen Produkte.
Fazit
Mehrdimensionale Arrays in PHP erlauben dir,
komplexe Datenstrukturen in nur einer Variablen zu speichern.
Vom einfachen 2D-Array (ähnlich einer Tabelle) bis zu tief verschachtelten Strukturen
(3D, 4D etc.) findest du so für viele Szenarien eine Lösung, in der du
sowohl numerische Indizes als auch assoziative Schlüssel nutzen kannst.
Achte darauf, deinen Code übersichtlich zu halten –
mit sinnvollen Schleifen (foreach oder verschachtelte for-Schleifen),
eindeutigen Keys und ggf. Hilfsfunktionen zur Wartung.
Damit kannst du komplexe Datenmodelle abbilden,
ohne aufwendig Klassen zu definieren oder externe Datenbanken zu bemühen.