我环顾四周,无法找到答案,所以我想知道我是否包含这样的阵列..
$array['foo']['bar'][1] = '';
$array['foo']['bar'][2] = '';
$array['foo']['bar'][3] = '';
$array['foo']['bar'][4] = '';
如何检查所有值是否为空?我尝试了以下操作:
if (empty($array['foo']['bar'])) {
// Array empty
}
但正如预期的那样无效。
我该怎么做?
答案 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)