php判断数组是否为空 哪个效率高
仅有的幸福
仅有的幸福 2017-05-16 12:58:57
[PHP讨论组]

isset count empty

仅有的幸福
仅有的幸福

全部回复(2)
仅有的幸福

直接说结论:empty 效率最高。

count 需要先统计数组的长度,然后再进行判断。

有回复指出此处不正确

之前一直以为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));

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中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号