最近在做一个项目,遇到一个需要判断一个数组是否为空数组的问题。
一般的,当被测试的数组是一个一维数组的时候,只要简单的用 bool empty(array) 就能解决问题。
当被测试的数组为二维数组时,empty函数返回的是true,这显然不行。
像下段代码中,$array 是个空数组。
$array = array(
'a' => array(
'1' => array(
'A'=> array(''),
),
),
'b' => array(),
'c' => array(),
);
分析可以看出,只要构建一个递规函数就能解决,函数如下:
function isEmptyArray ($arr ){
if ( empty($arr)) return true;
foreach ($arr as $ar){
if (! is_array($ar)) {
return empty($ar);
}
else {
return isEmptyArray($ar);
}
}
}
测试
if ( isEmptyArray($arr)){
echo '空数组';
}
else {
echo '非空数组';
}
输出结果
空数组