Den*_*suk 6 php arrays recursion arraylist multidimensional-array
我正在尝试编写一个递归计数数组元素的函数.
但结果是错误的.
这有什么问题?
$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);
Run Code Online (Sandbox Code Playgroud)
Chr*_*n P 30
这是谷歌的第二个结果,所以我将其作为参考添加.PHP中已经有一个内置函数可以使用:count().
你可以像这样使用它:
count($schema, COUNT_RECURSIVE);
Run Code Online (Sandbox Code Playgroud)
此函数还可以检测递归以避免无限循环,因此它比其他答案中的解决方案更安全.
小智 6
PHP为此有一个内置方法,称为count()。如果传递时不带任何其他参数,则count()返回第一级上的数组键数。但是,如果将第二个参数传递给count方法count( $schema, true ),则结果将是多维数组中键的总数。标记为正确的响应只会迭代第一级和第二级数组,如果该数组中有第三个子级,它将不会返回正确的答案。
但是,如果您确实想编写自己的count()方法,则可以将其编写为递归函数。
| 归档时间: |
|
| 查看次数: |
11133 次 |
| 最近记录: |