如何在 PHP 中不使用循环来计算多维数组的元素数量?

问题描述 投票:0回答:3

我有一个如下所示的数组:

$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
。我怎样才能在不使用循环的情况下做到这一点?

php arrays multidimensional-array
3个回答
5
投票

同时使用

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

2
投票

使用 array_sum 函数

$totalarray = array_sum(array_map("count", $array));

使用 Foreach 循环

$count = 0;
foreach( $array as $arrayVal){
    $count += count($arrayVal);
}

0
投票

从时间复杂度的角度来看,一个好的函数迭代器只循环一次数据并直接返回总计数是

array_reduce()

代码:(演示

echo array_reduce($array, fn($total, $row) => $total + count($row));
// 7
© www.soinside.com 2019 - 2024. All rights reserved.