Suppression des éléments vides du tableau

Certains éléments de mon tableau sont des chaînes vides basées sur ce que l'utilisateur a soumis. J'ai besoin de supprimer ces éléments. J'ai ceci :

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

Mais cela ne fonctionne pas. $linksArray a toujours des éléments vides. J'ai également essayé de le faire avec la fonction empty(), mais le résultat est le même.

Solution

Comme vous avez affaire à un tableau de chaînes de caractères, vous pouvez simplement utiliser array_filter(), qui se charge de tout cela pour vous :

print_r(array_filter($linksArray));

Gardez à l'esprit que si aucun callback n'est fourni, toutes les entrées du tableau égales à FALSE (voir [converting to boolean][1]) seront supprimées. Donc si vous avez besoin de préserver les éléments qui sont par exemple la chaîne exacte '0', vous aurez besoin d'un callback personnalisé :

// 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 !== ''; }));

[1] : http://php.net/manual/en/language.types.boolean.php#language.types.boolean.casting

Commentaires (13)
$linksArray = array_filter($linksArray);

"Si aucun rappel n'est fourni, toutes les entrées dont l'entrée est égale à FALSE seront supprimées.&quot ; -- http://php.net/manual/en/function.array-filter.php

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