Lieber dedlfix,
function removeEmptyElement($value, $key, $array) {
if (empty($value))
unset($array[$key]);
}array_walk($array, 'removeEmptyElement', &$array);
Ich meine in der [Funktions-Referenz](http://de2.php.net/manual/de/function.array-walk.php) gelesen zu haben, dass genau das problematisch sei.
<Zitat von http://de2.php.net/manual/de/function.array-walk.php>
> Von der Benutzerfunktion aus darf das Array selbst nicht geändert werden, wie zum Beispiel durch Hinzufügen oder Löschen eines Elementes, etc. Wird das auf array\_walk() angewendete Array geändert, so ist das Verhalten dieser Funktion undefiniert und unvorhersagbar.
</Zitat>
> Beachte die Referenz bei der Übergabe des dritten Parameters. Allerdings hat diese Lösung einen Schönheitsfehler, der sich mit einer "Call-time pass-by-reference has been deprecated"-Warnung zeigt.
Eben.
> > Es gibt meines Wissens keine Funktion, die ein Array nach einem Wert durchsucht, und diesen dann gleich auch noch aus dem Array löscht.
>
> Man muss ja auch nicht für alle denkbaren und undenkbaren Fälle eine Funktion vorhalten. Das muss ja auch noch alles gewartet werden...
Aber genau \_das\_ war die Frage des OPs. Und meine Antwort darauf war "Jein".
> Ich hab nochmal was probiert und ein foreach als genau so zweckmäßig und elegant empfunden:
>
> ~~~php
> foreach ($array as $key => $value)
> if (empty($value))
> unset($array[$key]);
>
Genau danach hat der OP wohl gesucht. Aber das hätte er dann selbst entwickeln müssen. Du hast ihm soeben die Arbeit abgenommen (wenn er wieder mal hereinschaut).
Liebe Grüße aus Ellwangen,
Felix Riesterer.