Fjern tomme matriseelementer

Noen elementer i matrisen min er tomme strenger basert på hva brukeren har sendt inn. Jeg må fjerne disse elementene. Jeg har dette:

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

Men det fungerer ikke. $linksArray har fortsatt tomme elementer. Jeg har også prøvd å gjøre det med empty()-funksjonen, men resultatet er det samme.

Løsning

Siden du har å gjøre med en rekke strenger, kan du ganske enkelt bruke array_filter(), som enkelt håndterer alt dette for deg:

print_r(array_filter($linksArray));

Husk at hvis ingen callback leveres, vil alle oppføringer av array lik FALSE (se converting to boolean) bli fjernet. Så hvis du trenger å bevare elementer som er f.eks. eksakte strenger '0', trenger du en egendefinert 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 !== ''; }));
Kommentarer (13)
$linksArray = array_filter($linksArray);

"Hvis ingen callback leveres, vil alle oppføringer med input lik FALSE bli fjernet." -- http://php.net/manual/en/function.array-filter.php

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