Php递归数组计数

标签 php arrays recursion multidimensional-array arraylist

我正在尝试编写一个递归地计算数组元素的函数。

但结果是错误的。

这可能是什么问题?

$schema = array(
    'div' => array(
        'class' => 'lines',
        'div' => array(
             'span' => array(
                'key' => 'Product Name'
            ),
            'val' => 'Soap'
        ),
        'layer' => array(
             'span' => array(
                'key' => 'Product Name'
            ),
            'val' => 'Ball'
            )
        )
);

function count_r($array, $i = 0){
    foreach($array as $k){
        if(is_array($k)){ $i += count_r($k, count($k)); }
        else{ $i++; }
    }
    return $i;
}

echo count_r($schema);

最佳答案

这是 Google 上的第二个结果,因此我将其添加为引用。您可以使用 PHP 中已有的内置函数:count() .

你可以这样使用它:

count($schema, COUNT_RECURSIVE);

此函数还可以检测递归以避免无限循环,因此它比其他答案中的解决方案更安全。

关于Php递归数组计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18429958/

相关文章:

javascript - 如何在javascript中从数组制作二叉树?

c - Return 在 Factorial 中是如何工作的?

Haskell - 使用数据类型的函数中的非详尽模式

c# - 为多维数组赋值的更好方法

Java或php树结构问题

php - Composer 包测试 Bootstrap

php - Laravel:如何将值从表单传递到 Controller ?

javascript - 如何按指定元素对数组数组进行排序?

JavaScript:我在 JavaScript 中练习递归,并试图从条件返回 true 或 false,但什么也没看到

javascript - AngularJS $http.post 调用返回 502(坏网关)错误