Boş dizi elemanlarını kaldırır

Dizimdeki bazı öğeler, kullanıcının gönderdiklerine bağlı olarak boş dizelerdir. Bu elemanları kaldırmam gerekiyor. Buna sahibim:

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

Ama işe yaramıyor. $linksArrayhala boş öğelere sahip. Bunuempty()` fonksiyonu ile yapmayı da denedim, ancak sonuç aynı.

Çözüm

Bir dizi dizeyle uğraştığınız için, tüm bunları sizin için kolayca halleden array_filter() kullanabilirsiniz:

print_r(array_filter($linksArray));

Unutmayın ki geriye çağırma sağlanmazsa, dizinin FALSE değerine eşit olan tüm girdileri (bkz. boolean'a dönüştürme) kaldırılacaktır. Bu nedenle, tam dize '0' olan öğeleri korumanız gerekiyorsa, özel bir geri aramaya ihtiyacınız olacaktır:

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

"Hiçbir geri arama sağlanmazsa, FALSE'ye eşit olan tüm girdi girdileri kaldırılacaktır." -- http://php.net/manual/en/function.array-filter.php

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