PHP Array-Funktionen verstehen: Ein umfassender Leitfaden
Arrays in PHP sind eine grundlegende Datenstruktur für jeden Entwickler. Sie ermöglichen das Speichern und Verwalten einer Sammlung von Werten in einer einzigen Variable.
Ein Array in PHP ist eine einzelne Variable, die eine Sammlung von Werten enthält. Anstatt $user1, $user2, $user3 zu deklarieren, speichert man alle Werte in einem Array und greift über einen Index (eine Zahl) oder einen Schlüssel (einen Namen) darauf zu. Arrays gehören zu den am häufigsten verwendeten Bausteinen in PHP — Anfragedaten ($_POST, $_GET), Datenbankzeilen und Konfigurationen werden alle als Arrays übergeben.
Dieses Kapitel erklärt die drei Arten von PHP-Arrays, wie man sie erstellt und liest, wie man über sie iteriert und welche eingebauten Funktionen man am häufigsten verwendet.
Drei Arten von Arrays
PHP hat intern einen einzigen Array-Typ, aber es gibt drei verschiedene Verwendungsweisen:
| Art | Schlüssel | Typische Verwendung |
|---|---|---|
| Indiziert | Automatische Ganzzahlen 0, 1, 2… | Eine geordnete Liste von Elementen |
| Assoziativ | Selbst gewählte Strings | Ein Datensatz mit benannten Feldern |
| Mehrdimensional | Arrays innerhalb von Arrays | Tabellen, gruppierte Daten |
Arrays erstellen
Die moderne Kurzschreibweise verwendet eckige Klammern []; die ältere array()-Form ist gleichwertig und funktioniert weiterhin.
<?php
// Indexed array — keys 0, 1, 2 are assigned automatically
$fruits = ["apple", "banana", "cherry"];
// Associative array — you choose the keys
$user = [
"name" => "Ada",
"email" => "[email protected]",
"admin" => true,
];
echo $fruits[0]; // apple
echo $user["name"]; // AdaMit der Leerklammer-Syntax fügt man Elemente hinzu, was am Ende anhängt:
<?php
$fruits = ["apple", "banana"];
$fruits[] = "cherry"; // index 2
$fruits[] = "date"; // index 3
print_r($fruits);
// Array ( [0] => apple [1] => banana [2] => cherry [3] => date )Weitere Details zu den einzelnen Typen finden sich unter
indexed arrays,associative arraysundmultidimensional arrays.
Über ein Array iterieren
Die foreach-Schleife ist die idiomatische Methode, um ein Array zu durchlaufen, da sie Schlüssel und Wert direkt liefert, ohne manuelle Indexverwaltung:
<?php
$user = ["name" => "Ada", "email" => "[email protected]"];
foreach ($user as $key => $value) {
echo "$key: $value\n";
}
// name: Ada
// email: [email protected]Das Kapitel foreach loop behandelt die vollständige Syntax, einschließlich der Iteration per Referenz.
Wie Array-Funktionen funktionieren
PHP enthält Hunderte von Array-Funktionen — vordefinierte Hilfsfunktionen, die eine bestimmte Operation ausführen, sodass man die Schleife nicht selbst schreiben muss. Ein wichtiger Punkt: Die meisten davon geben ein neues Array zurück und lassen das Original unverändert (array_map, array_filter, array_merge…), während eine kleinere Gruppe das Array direkt verändert und etwas anderes zurückgibt (sort gibt true zurück, array_push gibt die neue Länge zurück). Diesen Unterschied zu kennen vermeidet eine häufige Klasse von Bugs.
Eine Funktion wird aufgerufen, indem man das Array als Argument übergibt. array_sum zum Beispiel addiert alle Werte:
Die am häufigsten verwendeten Funktionen
| Funktion | Was sie tut | Verändert? |
|---|---|---|
count() | Anzahl der Elemente | nein |
in_array() | Ist ein Wert vorhanden? | nein |
array_keys() | Alle Schlüssel als Array | nein |
array_values() | Alle Werte, ab 0 neu indiziert | nein |
array_merge() | Zwei oder mehr Arrays zusammenführen | nein |
array_slice() | Einen Abschnitt extrahieren | nein |
array_unique() | Doppelte Werte entfernen | nein |
array_push() | Einen oder mehrere Werte anhängen | ja |
sort() | Werte aufsteigend sortieren | ja |
Hier sind die drei wichtigsten Callback-Funktionen — map, filter und reduce — die die meisten Datenumformungsaufgaben abdecken.
array_map — jedes Element transformieren
array_map führt einen Callback auf jeden Wert aus und gibt ein neues Array der Ergebnisse zurück, das dieselbe Länge wie das Original hat:
<?php
$numbers = [1, 2, 3, 4];
$squared = array_map(fn($n) => $n * $n, $numbers);
print_r($squared);
// Array ( [0] => 1 [1] => 4 [2] => 9 [3] => 16 )array_filter — nur passende Elemente behalten
array_filter behält die Elemente, für die der Callback true zurückgibt. Dabei werden die ursprünglichen Schlüssel beibehalten, sodass man oft array_values() nachschaltet, um neu zu indizieren:
<?php
$numbers = [1, 2, 3, 4, 5, 6];
$even = array_filter($numbers, fn($n) => $n % 2 === 0);
print_r($even);
// Array ( [1] => 2 [3] => 4 [5] => 6 ) ← keys kept
print_r(array_values($even));
// Array ( [0] => 2 [1] => 4 [2] => 6 ) ← re-indexedarray_reduce — auf einen einzelnen Wert reduzieren
array_reduce wendet einen Callback an, der einen Akkumulator ($carry) über das gesamte Array trägt und es auf ein einzelnes Ergebnis reduziert — eine Summe, einen String, ein Maximum oder beliebiges anderes:
Für vollständige Details siehe array_map, array_filter und array_reduce, sowie PHP callback functions für die Funktionsweise von Callbacks.
Häufige Fallstricke
array_filterbehält Schlüssel bei. Wie oben gezeigt, beginnt das Ergebnis nicht mehr bei0, 1, 2…. Für eine saubere Liste inarray_values()einwickeln.array_mergenummeriert Integer-Schlüssel neu, überschreibt aber String-Schlüssel.array_merge(["a" => 1], ["a" => 2])ergibt["a" => 2], während zwei indizierte Arrays verkettet, nicht überschrieben werden.- Verändern vs. Zurückgeben.
sort($arr)ändert$arrund gibttruezurück —$arr = sort($arr)zu schreiben ist ein klassischer Bug, der$arrauftruesetzt. - Auf einen fehlenden Schlüssel zugreifen erzeugt eine Warnung und gibt
nullzurück. Vorher mitisset()oderarray_key_exists()absichern.
Fazit
PHP-Arrays gibt es in drei Varianten — indiziert, assoziativ und mehrdimensional — und eine umfangreiche Funktionsbibliothek steht zum Abfragen, Transformieren und Kombinieren bereit. foreach zum Iterieren verwenden, array_map / array_filter / array_reduce zum Umformen von Daten, und stets den Unterschied zwischen Verändern und Zurückgeben im Blick behalten, um unerwartete Ergebnisse zu vermeiden. Von hier aus lohnt sich ein Blick auf sorting arrays und PHP functions, um das Werkzeugset zu vervollständigen.