Tyhjien array-elementtien poistaminen

Jotkin elementit ovat tyhjiä merkkijonoja sen perusteella, mitä käyttäjä on lähettänyt. Minun on poistettava nämä elementit. Minulla on tämä:

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

Mutta se ei toimi. $linksArray sisältää edelleen tyhjiä elementtejä. Olen myös yrittänyt tehdä sen empty()-funktiolla, mutta tulos on sama.

Ratkaisu

Koska kyseessä on merkkijonojen joukko, voit yksinkertaisesti käyttää array_filter(), joka hoitaa kaiken tämän kätevästi puolestasi:

print_r(array_filter($linksArray));

Muista, että jos mitään takaisinkutsua ei anneta, kaikki FALSE:n (ks. converting to boolean) arvoiset merkinnät poistetaan. Jos siis haluat säilyttää elementit, jotka ovat esim. tarkka merkkijono '0', tarvitset mukautetun callbackin:

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

"Jos takaisinsoittoa ei anneta, kaikki syötteen merkinnät, joiden arvo on FALSE, poistetaan." -- http://php.net/manual/en/function.array-filter.php

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