扫码关注官方订阅号
isset count empty
直接说结论:empty 效率最高。
count 需要先统计数组的长度,然后再进行判断。
有回复指出此处不正确 之前一直以为count 的时间复杂度是 O(n),这次被打脸后特别去阅读了一下原码才发现是实际上是 O(1)。
有回复指出此处不正确
之前一直以为count 的时间复杂度是 O(n),这次被打脸后特别去阅读了一下原码才发现是实际上是 O(1)。
count源码链接
count 函数对数组的操作:
case IS_ARRAY: RETURN_LONG (php_count_recursive (array, mode TSRMLS_CC) )
走了 php_count_recursive 操作,然后再看 php_count_recursive 函数对数组的操作是:cnt = zend_hash_num_elements(Z_ARRVAL_P(array));
cnt = zend_hash_num_elements(Z_ARRVAL_P(array));
zend_hash_num_elements 代码:
ZEND_API int zend_hash_num_elements(HashTable *ht) { IS_CONSISTENT(ht); return ht->nNumOfElements; }
isset 只能检测变量是否定义或是否为NULL值。如果变量有先定义的情况下 !$array 是等效于 empty的。效率也是相等的。
首先 如果不是关联数组的话 isset 效率高 通常都是使用 empty
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
直接说结论:empty 效率最高。
count 需要先统计数组的长度,然后再进行判断。count源码链接
count 函数对数组的操作:
走了 php_count_recursive 操作,然后再看 php_count_recursive 函数对数组的操作是:
cnt = zend_hash_num_elements(Z_ARRVAL_P(array));zend_hash_num_elements 代码:
isset 只能检测变量是否定义或是否为NULL值。
如果变量有先定义的情况下 !$array 是等效于 empty的。效率也是相等的。
首先 如果不是关联数组的话 isset 效率高 通常都是使用 empty