多维数组的递归计数元素 [英] Recursive count elements of multidimensional array

查看:105
本文介绍了多维数组的递归计数元素的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我尝试使用递归函数来对数组级别上的元素进行计数。但是已经两个小时不能这样做了。检查示例数组:

I try to make recursive function to count elements on array "levels". But can't do that for two hours already. Check example array:

Array ( 
    [0] => Array ( 
        [0] => Array ( 
            [0] => Array ( ) 
            [1] => Array ( ) 
        ) 
        [1] => Array ( ) 
    ) 
    [1] => Array ( 
        [0] => Array (
            [0] => Array (
                [0] => Array ( )
                [1] => Array ( )
            )
        )
    ) 
)

计算不同级别元素的结果数组将是:

The resulting array that count elements on different levels will be:

Array ([0] => 2, [1] => 3, [2] => 3, [3] => 2)

我制作了用于计算总数组元素的函数,但不知道如何计算每个级别

I made function for count total array elements, but no idea how to count each "level"

function countTotalArr($arr, $lvl) {
    if ($lvl != 0) $cnt = 1; 
    else $cnt = 0; // don't count zero level 

    for ($i = 0; $i < count($arr); $i++)
        $cnt += countArr($arr[$i], $lvl + 1);

    return $cnt;
}

$total = countTotalArr($referralsCount, 0);


推荐答案

使用 while

// $array is your array at the beginning of iteration

$depthMap = [];
$currentDepth = 0;
while(true) {
    $depthMap[$currentDepth] = count($array);

    $carry = [];
    foreach($array as $item) {
        if(is_array($item)) {
            $carry = array_merge($carry, $item);
        }
    }

    if(count($carry) < 1) {
        break;
    }

    $array = $carry;
    $currentDepth++;
}

这篇关于多维数组的递归计数元素的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆