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

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

我正在尝试将大量数据读入关联数组的数组中。 数据包含很多空数组和数组,其中键被设置,但是都是空值。 我想忽略这些,只有至less有一个键映射到一个非空值的数组。 (这些数据来自excel工作表,它有很多空单元,无论如何都被注册为“set”)。到目前为止,我已经尝试过:

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

这摆脱了空数组,但不是那些所有键映射到null的数组。 有没有更好的方法来做到这一点,而不是循环遍历整个数组,并popup所有的空值?

通过你已经有的代码来判断,你可以改变:

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

至:

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

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

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

你可以尝试如果(!array_filter($ array)){也

这不是一个理想的方法,但是如果所有的值都不能转换为数字值, 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})))