2012-01-30 310 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 

*/