W3docs

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:

ArtSchlüsselTypische Verwendung
IndiziertAutomatische Ganzzahlen 0, 1, 2…Eine geordnete Liste von Elementen
AssoziativSelbst gewählte StringsEin Datensatz mit benannten Feldern
MehrdimensionalArrays innerhalb von ArraysTabellen, 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"];   // Ada

Mit 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 arrays und multidimensional 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:

php— editable, runs on the server

Die am häufigsten verwendeten Funktionen

FunktionWas sie tutVerändert?
count()Anzahl der Elementenein
in_array()Ist ein Wert vorhanden?nein
array_keys()Alle Schlüssel als Arraynein
array_values()Alle Werte, ab 0 neu indiziertnein
array_merge()Zwei oder mehr Arrays zusammenführennein
array_slice()Einen Abschnitt extrahierennein
array_unique()Doppelte Werte entfernennein
array_push()Einen oder mehrere Werte anhängenja
sort()Werte aufsteigend sortierenja

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-indexed

array_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:

php— editable, runs on the server

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_filter behält Schlüssel bei. Wie oben gezeigt, beginnt das Ergebnis nicht mehr bei 0, 1, 2…. Für eine saubere Liste in array_values() einwickeln.
  • array_merge nummeriert 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 $arr und gibt true zurück — $arr = sort($arr) zu schreiben ist ein klassischer Bug, der $arr auf true setzt.
  • Auf einen fehlenden Schlüssel zugreifen erzeugt eine Warnung und gibt null zurück. Vorher mit isset() oder array_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.

Übungen

Übung
Welche Aussagen zu Arrays in PHP sind zutreffend?
Welche Aussagen zu Arrays in PHP sind zutreffend?
Was this page helpful?