php在尽量不用循环的情况下,判断二维数组中为空一维数组的数量

请问php中怎么在不用for等循环的情况下,判断二维数组中各一维数组是否为空,并统计出空数组的个数,查找了系统函数并没有发现相关的函数,特来请教。

 $a = [
        [],
        [],
        [],
        [],
        []
    ];

$b = [
    ['a' => 1],
    [],
    [],
    ['b' => 2],
    []
];

比如说上面两个数组,在不用循环或者用循环的情况下,怎么给出优雅的答案?

阅读 3k
4 个回答
$b = [
    ['a' => 1],
    [],
    [],
    ['b' => 2],
    []
];

// 数组去空
$tmp = array_filter($b);

echo '<pre>';
var_dump(array_diff_key($b, $tmp));

结果:

array(3) {
  [1]=> array(0) { }
  [2]=> array(0) { }
  [4]=> array(0) { }
}

这些函数内部肯定还是循环

如果只是统计 空的个数,以下代码应该可以

$a = [
        ['a' => 1],
        [],
        [],
        [],
        []
    ];

$b = array_filter($a);

$nullnum = count($a)-count($b);

echo $nullnum;
$b = [
    ['a' => 1],
    [],
    [],
    ['b' => 2],
    []
];
array_walk($b,function ($v) use(&$num){empty($v) ? $num += 1 : '';});
var_dump($num);

json_encode?然后查询一下 []这个字符串的出现次数?

推荐问题