我正在尝试编写一个递归地计算数组元素的函数。
但结果是错误的。
这可能是什么问题?
$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/