Usuń puste elementy tablicy

Niektóre elementy w mojej tablicy są pustymi ciągami znaków na podstawie tego, co użytkownik przesłał. Muszę usunąć te elementy. Mam to:

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

Ale to'nie działa. Tablica $linksArray wciąż ma puste elementy. Próbowałem również zrobić to za pomocą funkcji empty(), ale wynik jest taki sam.

Rozwiązanie

Ponieważ masz do czynienia z tablicą łańcuchów, możesz po prostu użyć array_filter(), który wygodnie obsłuży to wszystko za Ciebie:

print_r(array_filter($linksArray));

Pamiętaj, że jeśli nie podano wywołania zwrotnego, wszystkie wpisy tablicy równe FALSE (zobacz konwersja na boolean) zostaną usunięte. Więc jeśli potrzebujesz zachować elementy, które są np. dokładnym ciągiem '0', będziesz potrzebował niestandardowego wywołania zwrotnego:

// 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 !== ''; }));
Komentarze (13)
$linksArray = array_filter($linksArray);

"Jeśli nie podano wywołania zwrotnego, wszystkie wpisy o wartości wejściowej równej FALSE zostaną usunięte." -- http://php.net/manual/en/function.array-filter.php

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