MWCodebymw.de ↗
PHP

Arrays in PHP elegant verarbeiten – array_map, array_filter und array_column

Statt for-Schleifen mit Zwischenarrays formst du Daten in PHP direkt um: array_map wandelt, array_filter siebt, array_column zieht eine Spalte, array_sum rechnet. Ich zeige die vier an einem typischen Datensatz aus der Datenbank.

Nach einer Datenbank-Abfrage habe ich meist ein Array aus Zeilen (jede Zeile ein assoziatives Array). Zum Aufbereiten für die Ausgabe nutze ich vier PHP-Funktionen, die verschachtelte Schleifen überflüssig machen.

Der Datensatz

$orders = [
    ['id' => 1, 'kunde' => 'Mia', 'betrag' => 90.0, 'bezahlt' => false],
    ['id' => 2, 'kunde' => 'Tom', 'betrag' => 25.0, 'bezahlt' => true],
    ['id' => 3, 'kunde' => 'Mia', 'betrag' => 15.0, 'bezahlt' => true],
];

Sieben, umwandeln, aufsummieren

// array_filter: nur bezahlte Bestellungen behalten
$bezahlt = array_filter($orders, fn($o) => $o['bezahlt']);

// array_column: nur die Beträge als flache Liste ziehen
$betraege = array_column($bezahlt, 'betrag');   // [25.0, 15.0]

// array_sum: aufsummieren
$umsatz = array_sum($betraege);                 // 40.0

// array_map: jede Zeile in eine Anzeige-Zeichenkette umwandeln
$labels = array_map(fn($o) => "{$o['kunde']}: {$o['betrag']} €", $orders);

array_filter behält Elemente, für die die Funktion true liefert. array_map gibt für jedes Element einen neuen Wert zurück. array_column ist der Geheimtipp bei DB-Zeilen: Es zieht eine einzelne Spalte heraus.

Zwei nützliche Kniffe

// array_column kann auch nach einem Schlüssel indexieren:
$byId = array_column($orders, null, 'id');   // [1 => [...], 2 => [...], 3 => [...]]
$eine = $byId[2];                            // direkter Zugriff statt Suchschleife

// Nach array_filter die Indizes zurücksetzen (0,1,2 …):
$bezahlt = array_values(array_filter($orders, fn($o) => $o['bezahlt']));

Der zweite Punkt ist eine häufige Stolperfalle: array_filter behält die alten Schlüssel. Für eine saubere, fortlaufend nummerierte Liste (etwa für json_encode als Array) wickelst du das Ergebnis in array_values.

Diese Funktionen halten meinen PHP-Code frei von Schleifen-Ballast. Mehr Snippets findest du auf code.bymw.de.

Quellen

#Array-Funktionen#PHP#array_map#array_column

Du brauchst mehr als ein Snippet?

Ich entwickle Android-Apps in Kotlin und moderne Websites für Selbstständige und kleine Unternehmen — von der ersten Idee bis zum Release.

Projekt anfragen →