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

5

我有一个以下形式的数组:

$array = Array
        (
            '0' => Array
                (
                    'num1' => 123,
                    'num2' => 456,
                ),
            '1' => Array
                (
                    'num3' => 789,
                    'num4' => 147,
                ),
            '2' => Array
                (
                    'num5' => 258,
                    'num6' => 369,
                    'num7' => 987,
                ),
        );

我想要计算元素的数量,例如从num1num7,意味着我想要输出7。如何在不使用循环的情况下完成这个任务?

2个回答

5

使用array_sumarray_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

1
非常好的和有用的回答。你比我快。 - Pawan Kumar Sharma
1
我本来想建议使用array_walk_recursive,但第二个解决方案完美无缺。 - Mohammad Niknam
1
是的,但如果数组有任何关联键(不是数组,例如 '3' => 10),则输出将是错误的,这就是为什么我提到它作为替代方法,但 array_map 将完美地工作。 - Chetan Ameta

2
使用array_sum函数
$totalarray = array_sum(array_map("count", $array));

使用Foreach循环

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接