W3docs

PHP-Arrays verstehen

PHP-Arrays sind Datenstrukturen zum Speichern von Variablensammlungen – ein Kernbestandteil der PHP-Programmierung für die Verwaltung großer Datenmengen.

Ein PHP-Array ist eine geordnete Map: eine einzelne Variable, die viele Werte speichert, die jeweils über einen Schlüssel erreichbar sind. Anstatt $fruit1, $fruit2, $fruit3 zu deklarieren, verwenden Sie ein einziges $fruits-Array und greifen auf seine Elemente per Position oder Name zu. Arrays sind die wichtigste Datenstruktur in PHP — Abfrageergebnisse, Formulareingaben ($_POST), Konfiguration und JSON kommen alle als Arrays an.

Dieses Kapitel behandelt die drei Array-Typen, wie man sie erstellt und liest, wie man Elemente hinzufügt, entfernt und zusammenführt, wie man sie durchläuft und die häufigsten Fallstricke. Jedes ausführbare Beispiel gibt sein Ergebnis aus, sodass Sie genau sehen können, was PHP produziert.

Typen von PHP-Arrays

PHP hat drei Array-Formen, und intern sind sie alle vom gleichen Typ — eine geordnete Map aus Schlüssel/Wert-Paaren:

  • Indizierte Arrays verwenden automatisch vergebene Integer-Schlüssel, beginnend bei 0.
  • Assoziative Arrays verwenden selbst gewählte String-Schlüssel.
  • Mehrdimensionale Arrays speichern andere Arrays als Werte und ermöglichen den Aufbau von Tabellen und verschachtelten Strukturen.
// Indexed: keys 0, 1, 2 are assigned automatically
$fruits = ["apple", "banana", "cherry"];

// Associative: you pick the keys
$colors = ["apple" => "red", "banana" => "yellow", "cherry" => "dark red"];

// Multidimensional: values are themselves arrays
$basket = [
    ["name" => "apple",  "qty" => 4],
    ["name" => "banana", "qty" => 6],
];

Jede Form hat ihr eigenes dediziertes Kapitel: indizierte Arrays, assoziative Arrays und mehrdimensionale Arrays.

PHP-Arrays erstellen

Es gibt zwei gleichwertige Syntaxvarianten. Die kurze []-Syntax (PHP 5.4+) wird in modernem Code bevorzugt; das ältere array()-Konstrukt macht genau dasselbe.

// Short array syntax — recommended
$fruits = ["apple", "banana", "cherry"];

// Long syntax with the array() language construct
$fruits = array("apple", "banana", "cherry");

Sie können ein Array auch schrittweise aufbauen. Die Zuweisung an $arr[] fügt das nächste Element mit dem nächsten Integer-Schlüssel hinzu, und die Zuweisung an einen benannten Schlüssel erstellt oder überschreibt diesen Eintrag:

$fruits = [];
$fruits[] = "apple";     // key 0
$fruits[] = "banana";    // key 1
$fruits["best"] = "fig"; // string key "best"

Auf Array-Elemente zugreifen

Lesen Sie einen Wert mit [], indem Sie einen Integer-Index für indizierte Arrays oder einen String-Schlüssel für assoziative Arrays übergeben.

<?php
$fruits = ["apple", "banana", "cherry"];
$colors = ["apple" => "red", "banana" => "yellow"];

echo $fruits[0];        // apple
echo "\n";
echo $colors["apple"];  // red
?>

Das Lesen eines nicht vorhandenen Schlüssels erzeugt eine Warnung und liefert null. Prüfen Sie vorher mit isset() (nur true, wenn der Schlüssel existiert und nicht null ist) oder array_key_exists() (auch true, wenn der gespeicherte Wert null ist), oder verwenden Sie den Null-Koaleszenz-Operator als Fallback:

<?php
$colors = ["apple" => "red"];

$banana = $colors["banana"] ?? "unknown"; // no warning, returns "unknown"
echo $banana;
?>

Elemente hinzufügen und entfernen

PHP bietet dedizierte Funktionen zum Ändern eines Arrays von beiden Enden:

  • array_push($arr, $value) — am Ende hinzufügen (oder einfach $arr[] = $value verwenden).
  • array_pop($arr) — das letzte Element entfernen und zurückgeben.
  • array_unshift($arr, $value) — am Anfang hinzufügen.
  • array_shift($arr) — das erste Element entfernen, zurückgeben und den Rest neu indizieren.
  • unset($arr[$key]) — ein bestimmtes Element löschen (hinterlässt eine Lücke bei Integer-Schlüsseln).
<?php
$fruits = ["apple", "banana", "cherry"];

array_push($fruits, "mango"); // ["apple","banana","cherry","mango"]
$last = array_pop($fruits);   // $last = "mango"
unset($fruits[1]);            // removes "banana", keys 0 and 2 remain

print_r($fruits);
?>

Ausgabe:

Array
(
    [0] => apple
    [2] => cherry
)

Beachten Sie das fehlende [1]unset() nummeriert nicht neu. Um die Schlüssel wieder auf 0, 1, 2… zu verdichten, verwenden Sie array_values($fruits). Weitere Details finden Sie unter array_push und array_pop.

Arrays durchlaufen

foreach ist die idiomatische Methode, um ein Array zu durchlaufen; es funktioniert sowohl für indizierte als auch für assoziative Arrays und liefert sowohl den Schlüssel als auch den Wert.

<?php
$colors = ["apple" => "red", "banana" => "yellow", "cherry" => "dark red"];

foreach ($colors as $fruit => $color) {
    echo "$fruit is $color\n";
}
?>

Ausgabe:

apple is red
banana is yellow
cherry is dark red

Weitere Muster finden Sie im Kapitel zur foreach-Schleife und in der allgemeinen Übersicht über PHP-Schleifen.

Arrays zusammenführen

array_merge() kombiniert zwei oder mehr Arrays zu einem neuen. Beachten Sie, wie Integer-Schlüssel behandelt werden: Integer-Schlüssel werden neu nummeriert, aber String-Schlüssel kollidieren — der Wert eines späteren Arrays überschreibt den eines früheren mit demselben String-Schlüssel.

php— editable, runs on the server

Ausgabe:

Array
(
    [0] => apple
    [1] => banana
    [2] => cherry
    [3] => mango
)

Wenn Sie nur nummerierte Arrays anhängen möchten, ist der Spread-Operator eine kompakte Alternative: $all = [...$fruits1, ...$fruits2];. Für String-Schlüssel-Zusammenführungen, bei denen der erste Wert gewinnen soll, verwenden Sie stattdessen den +-Union-Operator. Mehr dazu im Kapitel array_merge.

Nützliche Array-Hilfsfunktionen

Die PHP-Standardbibliothek enthält Dutzende von Array-Funktionen. Eine Auswahl, die Sie ständig benötigen werden:

FunktionWas sie tut
count($arr)Anzahl der Elemente
in_array($v, $arr)Ob ein Wert vorhanden ist (Details)
array_keys($arr)Alle Schlüssel als neues Array (Details)
array_values($arr)Alle Werte, neu indiziert ab 0
sort($arr)Werte in-place sortieren (Arrays sortieren)
<?php
$fruits = ["apple", "banana", "cherry"];

echo count($fruits);                              // 3
echo "\n";
echo in_array("banana", $fruits) ? "yes" : "no";  // yes
?>

Häufige Fallstricke

  • Schlüssel sind eindeutig. Die Zuweisung an einen vorhandenen Schlüssel überschreibt ihn, anstatt einen zweiten Eintrag hinzuzufügen.
  • "1" und 1 kollidieren. Numerische String-Schlüssel werden in Integer umgewandelt, sodass $a["1"] und $a[1] denselben Slot ansprechen.
  • Arrays werden per Wert kopiert. Das Übergeben eines Arrays an eine Funktion gibt dieser Funktion eine Kopie; das Original bleibt unverändert, es sei denn, Sie übergeben es per Referenz (&$arr).
  • unset() hinterlässt Lücken. Verwenden Sie danach array_values(), wenn Sie einen sauberen, zusammenhängenden Index benötigen.

Fazit

PHP-Arrays bilden die Grundlage für das Speichern und Organisieren von Daten — von einer einfachen Liste von Werten bis hin zu verschachtelten Datensätzen. Beherrschen Sie die drei Formen, die Operationen zum Erstellen/Lesen/Hinzufügen/Entfernen, foreach und einige Hilfsfunktionen, und Sie können den überwiegenden Teil realer Datenaufgaben in PHP bewältigen. Von hier aus können Sie tiefer in indizierte Arrays, assoziative Arrays und Arrays sortieren eintauchen.

Übungen

Übung
Welche verschiedenen Array-Typen gibt es in PHP?
Welche verschiedenen Array-Typen gibt es in PHP?
Was this page helpful?