请教:PHP中count($fruits,1)对多维数组计数输出6的原因
为什么PHP代码
count($fruits, 1)的输出是6? 嘿,这个问题其实搞懂PHP里count()函数的递归计数逻辑就完全清楚啦!
首先,先明确count()函数的第二个参数作用:PHP的count()函数默认只统计数组最外层的元素,但如果把第二个参数设为1(或者官方推荐的常量COUNT_RECURSIVE),它就会递归遍历多维数组的所有层级,把每个子数组本身也当作一个元素来计数。
我们来拆解你给出的数组:
$fruits = array("banana", "pineapple", array("apple", "mango"), "guava");
现在一步步统计(开启递归计数的情况下):
- 最外层第一个元素
"banana"→ 计数+1 - 最外层第二个元素
"pineapple"→ 计数+1 - 最外层第三个元素是子数组
array("apple", "mango"):- 这个子数组本身算作1个元素 → 计数+1
- 子数组内的
"apple"→ 计数+1 - 子数组内的
"mango"→ 计数+1
这部分总共贡献了3个计数
- 最外层第四个元素
"guava"→ 计数+1
把这些数字加起来:1+1+3+1=6,这就是代码运行后输出6的原因啦!
如果用默认的count($fruits)(也就是第二个参数用默认值0/COUNT_NORMAL),只会统计最外层的4个元素,结果就是4。
内容的提问来源于stack exchange,提问作者Ruwansiri Pathirana
相关产品推荐
相关产品推荐

