Die häufigste Antwort zu diesem Thema ist absolut FALSCH.
Betrachten Sie das folgende PHP-Skript:
<?php
$arr = array('1', '', '2', '3', '0');
// Incorrect:
print_r(array_filter($arr));
// Correct:
print_r(array_filter($arr, 'strlen'));
Warum ist das so? Weil eine Zeichenkette, die ein einzelnes '0'-Zeichen enthält, auch als boolesches false ausgewertet wird, so dass sie, obwohl sie keine leere Zeichenkette ist, trotzdem gefiltert wird. Das wäre ein Fehler.
Die Übergabe der eingebauten strlen-Funktion als Filterfunktion wird funktionieren, da sie für eine nicht leere Zeichenkette eine Ganzzahl ungleich Null und für eine leere Zeichenkette eine Ganzzahl Null zurückgibt. Ganzzahlen, die nicht Null sind, werden bei der Konvertierung in boolesche Werte immer als true ausgewertet, während Ganzzahlen mit Null bei der Konvertierung in boolesche Werte immer als false ausgewertet werden.
Die absolute, endgültige und richtige Antwort lautet also:
$arr = array_filter($arr, 'strlen');