开发者社区 问答 正文

PHP的count()函数是数组的O(1)还是O(n)?

是count()真的要计算PHP数组的所有元素,还是将此值缓存在某个地方并被获取? 问题来源于stack overflow

展开
收起
保持可爱mmm 2020-02-08 12:36:10 454 分享 版权
1 条回答
写回答
取消 提交回答
  • 好吧,我们可以看看源代码:

    /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。

    2020-02-08 12:36:20
    赞同 展开评论
问答分类:
PHP
问答地址: