Start · Sprachen · PHP · Kapitel · Arrays & Kollektionen
// Kapitel · PHP

Arrays & Kollektionen

Arrays sind in PHP die Universalstruktur: Liste, Dictionary, Stack, Queue — alles in einem.

Kurzantwort
Arrays & Kollektionen in PHP — kurz erklärt

Ein Array in PHP ist eine geordnete Map, die Schlüssel auf Werte abbildet. PHP unterscheidet nicht zwischen Listen und Hashmaps — beide sind Arrays. Schlüssel können Integer oder String sein; Werte beliebig. Erzeugt mit [1, 2, 3] oder ["a" => 1]. Zentrale Funktionen: array_map(), array_filter(), array_reduce().

Array erstellen

// Indiziert (Liste)
$sprachen = ['PHP', 'Python', 'Go'];

// Assoziativ (Dictionary)
$user = [
    'name'  => 'Anna',
    'alter' => 28,
    'admin' => true,
];

// Verschachtelt
$db = [
    'host'    => 'localhost',
    'options' => ['charset' => 'utf8mb4', 'timeout' => 5],
];

Zugriff, Anfügen, Löschen

echo $sprachen[0];             // PHP
echo $user['name'];            // Anna

$sprachen[]         = 'Rust';  // ans Ende anhängen
$user['locale']     = 'de';    // Key hinzufügen
unset($user['admin']);         // Key entfernen

array_push($sprachen, 'Zig');  // funktional identisch zu $arr[] = ...

Wichtige Array-Funktionen

// Prüfen
in_array('PHP', $sprachen);    // bool
array_key_exists('name', $user);
count($sprachen);

// Transformieren
$upper = array_map(strtoupper(...), $sprachen);       // ['PHP','PYTHON','GO','RUST']
$long  = array_filter($sprachen, fn($s) => strlen($s) > 2);
$sum   = array_reduce([1,2,3,4], fn($acc,$n) => $acc + $n, 0);   // 10

// Sortieren (verändern das Array direkt)
sort($sprachen);              // aufsteigend, neue Keys
rsort($sprachen);             // absteigend
usort($users, fn($a,$b) => $a['alter'] <=> $b['alter']);

// Kombinieren
$alle = array_merge($a, $b);
$kombi = [...$a, ...$b];      // Spread-Operator (PHP 7.4+)

Destructuring

// Liste
[$erster, $zweiter] = $sprachen;

// Assoziativ (PHP 7.1+)
['name' => $name, 'alter' => $alter] = $user;

// In foreach
foreach ($users as ['name' => $name, 'email' => $email]) {
    // ...
}

Häufige Fragen

Wie prüfe ich, ob ein Array assoziativ oder indexiert ist?

Seit PHP 8.1 mit array_is_list($a) — true, wenn Schlüssel 0..n-1 sind. Vor 8.1: array_keys($a) === range(0, count($a)-1).

Wie merge ich zwei Arrays?

Numerisch indexierte: array_merge($a, $b) hängt an. Assoziative: ebenfalls array_merge — gleiche String-Keys werden überschrieben. Alternativ Spread: [...$a, ...$b] (PHP 8.1+ auch mit String-Keys).

Was ist der Unterschied zwischen <code>array_map</code> und <code>array_walk</code>?

array_map gibt ein neues Array zurück (immutable-Stil). array_walk mutiert das Original per Referenz und gibt bool zurück. Für funktionalen Code immer array_map.

Wie sortiere ich ein Array, ohne die Schlüssel zu verlieren?

Statt sort() (resettet Schlüssel): asort() sortiert nach Werten, ksort() nach Schlüsseln. Beide behalten die Zuordnung.

Welche Array-Funktion ersetzt verschachteltes <code>foreach</code>?

array_reduce() für Aggregationen, array_combine() für Zip-Operationen und array_column(), um aus einem Array von Zeilen eine Spalte zu extrahieren — spart viele Schleifen.