如何检查多维数组是否只包含空值?

时间:2013-07-06 19:12:51

标签: php arrays multidimensional-array is-empty

我环顾四周,无法找到答案,所以我想知道我是否包含这样的阵列..

$array['foo']['bar'][1] = '';
$array['foo']['bar'][2] = '';
$array['foo']['bar'][3] = '';
$array['foo']['bar'][4] = '';

如何检查所有值是否为空?我尝试了以下操作:

if (empty($array['foo']['bar'])) {
    // Array empty
}

但正如预期的那样无效。

我该怎么做?

3 个答案:

答案 0 :(得分:3)

如果您想检查所有填充的值是否可以使用

 if(call_user_func_array("isset", $array['foo']['bar']))

您想要做什么虽然可以使用带有闭包的数组缩减

 if(array_reduce($array, function(&$res, $a){if ($a) $res = true;}))

请注意,这只适用于php 5.3 +

答案 1 :(得分:1)

$array['foo']['bar']不为空,因为它实际上是array(1=>'',2=>'',3=>'',4=>'')

您需要在其上执行foreach循环以检查它是否确实全为空。

$arr_empty = true;
foreach ($array['foo']['bar'] as $arr) {
    if (!empty($arr)) {
        $arr_empty = false;
    }
}
//$arr_empty is now true or false based on $array['foo']['bar']

答案 2 :(得分:1)

一个简短的替代方案是:

if (empty(implode($array['foo']['bar']))) {
  // is empty
}

请注意,某些单个值可能会被视为空。请参阅empty()