是count()真的要计算PHP数组的所有元素,还是将此值缓存在某个地方并被获取? 问题来源于stack overflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
好吧,我们可以看看源代码:
/ext/standard/array.c PHP_FUNCTION(count)call php_count_recursive(),这反过来又需要zend_hash_num_elements()非递归数组,该数组是通过以下方式实现的:
ZEND_API int zend_hash_num_elements(const HashTable *ht) { IS_CONSISTENT(ht);
return ht->nNumOfElements;
} 所以你可以看到,它O(1)的$mode = COUNT_NORMAL。