我有一个如下所示的数组:
$array = Array
(
'0' => Array
(
'num1' => 123,
'num2' => 456,
),
'1' => Array
(
'num3' => 789,
'num4' => 147,
),
'2' => Array
(
'num5' => 258,
'num6' => 369,
'num7' => 987,
),
);
我想计算元素的数量,即从
num1
到num7
意味着我想要输出7
。我怎样才能在不使用循环的情况下做到这一点?
同时使用
array_sum
和 array_map
功能。
尝试以下解决方案:
$array = Array
(
'0' => Array
(
'num1' => 123,
'num2' => 456,
),
'1' => Array
(
'num3' => 789,
'num4' => 147,
),
'2' => Array
(
'num5' => 258,
'num6' => 369,
'num7' => 987,
),
);
echo $total = array_sum(array_map("count", $array));
输出
7
替代方法可以是:
echo count($array, COUNT_RECURSIVE) - count($array); //output: 7
使用 array_sum 函数
$totalarray = array_sum(array_map("count", $array));
使用 Foreach 循环
$count = 0;
foreach( $array as $arrayVal){
$count += count($arrayVal);
}
从时间复杂度的角度来看,一个好的函数迭代器只循环一次数据并直接返回总计数是
array_reduce()
。
代码:(演示)
echo array_reduce($array, fn($total, $row) => $total + count($row));
// 7