2014-03-12 50 views
2

这可能是一个非常微不足道的问题,但请耐心等待。我想读大量的数据到关联数组的数组中。这些数据包含很多空数组和数组,其中键被设置,但全部为空值。我想忽略这些,并且只推送至少有一个映射到非空值的键的数组。 (数据来自一个Excel工作表,它有很多注册为“设置”反正空单元格)。到目前为止,我曾尝试:如何在php中检查所有空值的关联数组?

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

这样可以摆脱空数组,而不是所有键映射到空的数组。有没有更好的方法来做到这一点,而不是循环遍历整个数组并弹出所有空值?

+0

如果你把它转换成.csv文件,我想你可能会有更多的运气。 – Zy0n

回答

3

通过你已有的代码来看,你可以改变:

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

到:

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

这将过滤掉所有空值(值计算到FALSE要准确)和检查如果结果数组为空。另请参阅array_filter()上的手册。

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

+1

谢谢!唯一的事情是,根据解析器,array_filter不会“返回到写入上下文”,所以我必须让它返回到一个变量,并让if语句评估 – Yitzchak

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}))) 
0

你可以尝试,如果(array_filter($阵列)!){还

相关问题