Rimuovere gli elementi vuoti dell'array

Alcuni elementi nel mio array sono stringhe vuote in base a ciò che l'utente ha inviato. Ho bisogno di rimuovere questi elementi. Ho questo:

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

Ma non funziona. $linksArray ha ancora elementi vuoti. Ho anche provato a farlo con la funzione empty(), ma il risultato è lo stesso.

Soluzione

Dato che avete a che fare con un array di stringhe, potete semplicemente usare array_filter(), che gestisce convenientemente tutto questo per voi:

print_r(array_filter($linksArray));

Tenete a mente che se non viene fornito alcun callback, tutte le voci dell'array uguali a FALSE (vedi converting to boolean) verranno rimosse. Quindi, se hai bisogno di preservare elementi che sono ad esempio la stringa esatta '0', avrai bisogno di una callback personalizzata:

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

"Se non viene fornito alcun callback, tutte le voci di input uguali a FALSE saranno rimosse." -- http://php.net/manual/en/function.array-filter.php

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