Does count()
really count the all the elements of a PHP array, or is this value cached somewhere and just gets retrieved?
Well, we can look at the source:
PHP_FUNCTION(count)
calls php_count_recursive()
, which in turn calls zend_hash_num_elements()
for non-recursive array, which is implemented this way:
ZEND_API int zend_hash_num_elements(const HashTable *ht)
{
IS_CONSISTENT(ht);
return ht->nNumOfElements;
}
So you can see, it's O(1)
for $mode = COUNT_NORMAL
.