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
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 →Verwandte Snippets
Beträge und Zahlen in PHP formatieren – number_format, sprintf und Intl
1234.5 ist keine Anzeige, sondern ein Wert. Auf der Rechnung soll 1.234,50 € stehen, in der API 1234.50 und im Dateinamen 1234-50. Drei Aufgaben, drei Werkzeuge – und ein Fehler, den fast jeder einmal macht.
Benannte Argumente in PHP 8 – Schluss mit true, false, null, true
Ein Aufruf wie erstelle($a, true, false, null, true) sagt nichts darüber, was die Wahrheitswerte bedeuten. Mit benannten Argumenten steht es im Aufruf – und optionale Parameter lassen sich überspringen.
Reguläre Ausdrücke in PHP – benannte Gruppen statt $m[3]
Ein Treffer-Array aus Zahlen liest sich nach zwei Wochen wie eine Geheimschrift. Benannte Gruppen geben jedem Teil einen Namen – und preg_replace_callback ersetzt damit Dinge, die kein einfacher Ersetzungsstring kann.