Leere Array-Elemente entfernen

Einige Elemente in meinem Array sind leere Zeichenfolgen auf der Grundlage dessen, was der Benutzer eingegeben hat. Ich brauche, um diese Elemente zu entfernen. Ich habe dies:

foreach($linksArray as $link)
{
    if($link == '')
    {
        unset($link);
    }
}
print_r($linksArray);

Aber es funktioniert nicht. Das $linksArray hat immer noch leere Elemente. Ich habe auch versucht, es mit der Funktion empty() zu machen, aber das Ergebnis ist das gleiche.

Lösung

Da Sie es mit einem Array von Strings zu tun haben, können Sie einfach array_filter() verwenden, das all dies bequem für Sie erledigt:

print_r(array_filter($linksArray));

Beachten Sie, dass wenn kein Rückruf angegeben wird, alle Einträge von array gleich FALSE (siehe Umwandlung in Boolean) entfernt werden. Wenn Sie also Elemente beibehalten wollen, die z.B. die exakte Zeichenkette '0' sind, benötigen Sie einen eigenen Callback:

// PHP < 5.3
print_r(array_filter($linksArray, create_function('$value', 'return $value !== "";')));

// PHP 5.3 and later
print_r(array_filter($linksArray, function($value) { return !is_null($value) && $value !== ''; }));
Kommentare (13)
$linksArray = array_filter($linksArray);

"Wenn kein Callback übergeben wird, werden alle Einträge von input gleich FALSE entfernt." -- http://php.net/manual/en/function.array-filter.php

Kommentare (3)
foreach($linksArray as $key => $link) 
{ 
    if($link === '') 
    { 
        unset($linksArray[$key]); 
    } 
} 
print_r($linksArray); 
Kommentare (3)