Verwijder lege array-elementen

Sommige elementen in mijn array zijn lege strings gebaseerd op wat de gebruiker heeft ingediend. Ik moet die elementen verwijderen. Ik heb dit:

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

Maar het werkt niet. $linksArray heeft nog steeds lege elementen. Ik heb ook geprobeerd om het met de empty() functie te doen, maar het resultaat is hetzelfde.

Oplossing

Omdat je te maken hebt met een array van strings, kun je gewoon array_filter() gebruiken, die dit allemaal handig voor je afhandelt:

print_r(array_filter($linksArray));

Denk eraan dat als er geen callback wordt meegegeven, alle items van de array die gelijk zijn aan FALSE (zie converteren naar boolean) zullen worden verwijderd. Dus als je elementen wilt behouden die bijv. de exacte string '0' zijn, dan heb je een aangepaste callback nodig:

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

"Als er geen callback wordt gegeven, worden alle invoergegevens die gelijk zijn aan FALSE verwijderd." -- http://php.net/manual/en/function.array-filter.php

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