2012-01-30 192 views
8
Array 
    (
     [0] => 0 //value is int 0 which isn;t empty value 
     [1] =>  //this is empty value 
     [2] =>  //this is empty value 
    ) 

我想使上面的數組如下,任何人都可以幫助我嗎?刪除數組中的空值元素

非常感謝

Array 
    (
     [0] => 0 
    ) 
+7

那些是什麼空值?它們是假的,NULL,空字符串還是別的?那麼0呢?它是整數0還是字符串「0」?在數組中使用'var_dump()'來確定值的類型。 – BoltClock 2012-01-30 11:08:27

+1

請定義'空值'。 – xdazz 2012-01-30 11:09:11

回答

19

您可以使用array_filter刪除空值(NULL,假, '',0):

array_filter($array); 

如果你不想刪除從您的0陣列,請參閱@ Sabari的回答:

array_filter($array,'strlen'); 
+3

不知道第二個參數是可選的,這很整齊。 – Gajus 2012-01-30 11:13:14

+0

@Zulkhaery Basrul,array_filter會認爲值0是空值,所以最終結果是一個空數組,它不是我想要的 – Acubi 2012-01-30 11:14:14

+0

@Acubi:更新了我的答案。 – 2012-01-30 11:22:24

5

您可以使用:

只刪除NULL值:

$new_array_without_nulls = array_filter($array_with_nulls, 'strlen'); 

要取出假值:

$new_array_without_nulls = array_filter($array_with_nulls); 

希望這有助於:)

+0

p.s.它也刪除了錯誤的布爾值... – Norris 2014-03-03 14:15:08

1
array_filter($array, function($var) { 
    //because you didn't define what is the empty value, I leave it to you 
    return !is_empty($var); 
}); 
0

這對array_filter的典型案例。首先,您需要定義返回TRUE如果該值應予以保留的功能和FALSE如果它應該被刪除:

function preserve($value) 
{ 
    if ($value === 0) return TRUE; 

    return FALSE; 
} 

$array = array_filter($array, 'preserve'); 

然後,您可以在回調函數(這裏preserve)什麼是空的,什麼不可以指定。你沒有專門寫你的問題,所以你需要自己做。

0

快速的方法來發現數字也是零(0)

var_dump( 
      array_filter(array('0',0,1,2,3,'text') , 'is_numeric' ) 
     ); 
/* 
print : 
array (size=5) 
    0 => string '0' (length=1) 
    1 => int 0 
    2 => int 1 
    3 => int 2 
    4 => int 3 

*/