PHP的count(数组)和strlen(字符串)的内部实现上是直接显示一个长度变量,还是重头依次数一遍有多少个元素?
关乎我理解这2个函数的效率。。
希望高人能从php的c源码上讲一讲。没有源码看过源码知道的说说也行。
1、count执行时背后有没有“逐个统计”子元素的个数?
2、strlen执行时背后有没有“逐个统计”字符的个数?
==========
我已经找到PHP strlen的源码了,唉沉下去的没几人。。。
正在找count的
=================
结论
strlen直接返回长度变量,没有计算。效率O(1)
count逐个数元素,发生大量计算。效率O(N)
----------------------------------------------
count是针对数组的,返回的是数组的长度,在实现上,数组就是一张hash表,count的时候就是统计这张表的元素个数
strlen是针对字符串的,返回的是字符串的长度,也就是字符串中的字符的个数,在实现上,没看过不清楚。
在使用上,strlen是不能用来统计数组的个数的,
虽然count可以传入字符串作为参数,但是它返回的是相当于count((array)字符串) 也就是 1 的效果。 和strlen返回的意义就不一样了
追问
先读懂我的问题吧,我没有问PHP层面的功能,功能在手册上都写着。问的是
1、count执行时背后有没有逐个统计“子元素”的个数?
2、strlen执行时背后有没有逐个统计“字符”的个数?
题意是把这2句合在一起问的。
注:
sizeof() 函数计算数组中的单元数目或对象中的属性个数。
该函数是 count() 的别名。
百度知道上看到的
来源:
http://zhidao.baidu.com/link?url=uTqPQf48jCkbyHA_cJMcfLSiw5GQd7i6KOWqEEnwVoTWe3YlMqYWc2KLF_3cvaKCl7XmNgw2XmKhql6fJZ0zc_