如何检查php中所有空值的关联数组?

时间:2014-03-12 14:26:09

标签: php arrays excel

这可能是一个非常微不足道的问题,但请耐心等待。

我试图将大量数据读入关联数组数组。数据包含许多空数组和带有键集的数组,但是包含所有空值。我想忽略这些,只推送至少有一个键映射到非空值的数组。 (数据来自excel表,它有很多空单元格,无论如何都注册为“set”。)到目前为止,我尝试过:

  

如果(!空($ {$ small_dummy}))
    array_push($ {$ big_dummy},$ {$ small_dummy});

摆脱空数组但不是所有键映射为null的数组。有没有比循环遍历整个数组并弹出所有空值更好的方法?

3 个答案:

答案 0 :(得分:5)

根据您已经拥有的代码判断,您可以更改:

if(!empty(${$small_dummy}))

为:

if(!empty(array_filter(${$small_dummy})))

这将过滤掉所有空值(评估为FALSE的值是准确的)并检查结果数组是否为空。另请参阅array_filter()上的手册。

请注意,这也会过滤0值,因此您可能需要为array_filter()编写自定义回调函数。

答案 1 :(得分:0)

这不是一种理想的方法,但如果所有值都无法转换为数值,array_sum将返回0。所以:

$small_dummy = array("a" => null, "foo", "", 0); 

if(array_sum($small_dummy) === 0) 

会通过。但是,如果您期望值为数字,那么这只是一种方法。

实际上,如果问题是数组键有值并且因此没有作为empty()传递,则使用array_values

if(!empty(array_values(${$small_dummy})))

答案 2 :(得分:0)

您可以尝试if(!array_filter($ array)){also