Einleitung: Warum leere Elemente in Arrays ein Problem sind
\n\nJeder PHP-Entwickler kennt die Situation: Ein Array, das eigentlich nur nützliche Daten enthalten soll, ist voller "Müll" – leere Strings, null-Werte, false oder Nullen. Besonders häufig tritt das bei der Verarbeitung von Formulardaten, CSV-Dateien, API-Antworten oder Benutzereingaben auf.
Stell dir vor: Du bekommst ein Array mit Tags von einem Benutzer, und die Hälfte davon sind leere Strings. Oder du importierst Daten aus Excel, und in manchen Zellen steht nur ein Leerzeichen. Ohne Bereinigung kann das fatale Folgen haben: fehlerhafte Datenbankabfragen, kaputte Filterlogik oder überflüssige Einträge in Berichten.
\n\nIn diesem Artikel zeigen wir dir, wie du leere Elemente aus einem PHP-Array entfernst – und das so effizient wie möglich. Du lernst nicht nur die grundlegenden Methoden, sondern auch fortgeschrittene Techniken: rekursive Bereinigung, Umgang mit mehrdimensionalen Arrays und Feinjustierung der Filterung. Los geht's!
\n\n1. Die Basismethode: array_filter() – dein wichtigstes Werkzeug
\n\nDer beliebteste und prägnanteste Weg, leere Elemente aus einem PHP-Array zu entfernen, ist die Funktion array_filter(). Standardmäßig entfernt sie alle Elemente, die im booleschen Kontext als "falsch" (false) gelten:
- \n
""(leerer String) \n null\n false\n 0und"0"\n [](leeres Array) \n
<?php\n$data = ['Apfel', '', 'Banane', null, 'Kirsche', false, 0];\n$clean = array_filter($data);\nprint_r($clean);\n// Ergebnis: Array ( [0] => Apfel [2] => Banane [4] => Kirsche )\n?>\n\nBeachte: Die Array-Schlüssel bleiben erhalten. Das kann problematisch sein, wenn du eine fortlaufende Nummerierung brauchst. Die Lösung: Wickele das Ergebnis in array_values() ein:
<?php\n$clean = array_values(array_filter($data));\nprint_r($clean);\n// Ergebnis: Array ( [0] => Apfel [1] => Banane [2] => Kirsche )\n?>\n\n1.1. Feinabstimmung: Nur leere Strings entfernen, aber Nullen behalten
\n\nWas, wenn du leere Strings aus einem PHP-Array löschen, aber Zahlen – inklusive Null – behalten möchtest? array_filter() ohne Parameter entfernt auch Nullen. Verwende stattdessen eine Callback-Funktion:
<?php\n$data = ['Apfel', '', 'Banane', 0, 'Kirsche', ' '];\n$clean = array_filter($data, function($value) {\n return $value !== '' && $value !== null;\n});\nprint_r($clean);\n// Ergebnis: Array ( [0] => Apfel [2] => Banane [3] => 0 [4] => Kirsche [5] => )\n?>\n\nAber die Leerzeichen sind noch da! Um auch sie zu entfernen, verwende trim():
<?php\n$clean = array_filter($data, function($value) {\n return trim($value) !== '' && $value !== null;\n});\nprint_r($clean);\n// Ergebnis: Array ( [0] => Apfel [2] => Banane [3] => 0 [4] => Kirsche )\n?>\n\n2. Fortgeschrittene Methoden: array_diff() und array_unique()
\n\nManchmal möchtest du leere Strings aus einem PHP-Array löschen oder bestimmte Werte entfernen, ohne eine Callback-Funktion zu nutzen. Hier hilft array_diff() – die Funktion zum Vergleichen von Arrays:
<?php\n$data = ['Apfel', '', 'Banane', null, 'Kirsche', false];\n// Erstelle ein Array mit "Stopp-Werten"\n$remove = ['', null, false];\n$clean = array_diff($data, $remove);\nprint_r($clean);\n// Ergebnis: Array ( [0] => Apfel [2] => Banane [4] => Kirsche )\n?>\n\nDer Vorteil dieser Methode ist ihre Übersichtlichkeit. Du gibst explizit an, welche Werte als "leer" gelten. Aber vergiss nicht: array_diff() entfernt Elemente nicht nach Schlüsseln, sondern vergleicht die Werte.
2.1. Doppelte leere Werte entfernen
\n\nWenn ein Array mehrere identische leere