这可能是一个非常微不足道的问题,但请耐心等待。
我试图将大量数据读入关联数组数组。数据包含许多空数组和带有键集的数组,但是包含所有空值。我想忽略这些,只推送至少有一个键映射到非空值的数组。 (数据来自excel表,它有很多空单元格,无论如何都注册为“set”。)到目前为止,我尝试过:
如果(!空($ {$ small_dummy}))
array_push($ {$ big_dummy},$ {$ small_dummy});
摆脱空数组但不是所有键映射为null的数组。有没有比循环遍历整个数组并弹出所有空值更好的方法?
答案 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