首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >哪个更快: in_array还是isset?

哪个更快: in_array还是isset?
EN

Stack Overflow用户
提问于 2012-11-21 06:20:35
回答 1查看 49.8K关注 0票数 102

这个问题只针对我,因为我总是喜欢写优化的代码,这些代码也可以在廉价的慢服务器(或有大量流量的服务器)上运行。

我环顾四周,找不到答案。我想知道在这两个例子中哪个更快,记住在我的例子中数组的键并不重要(当然是伪代码):

代码语言:javascript
复制
<?php
$a = array();
while($new_val = 'get over 100k email addresses already lowercased'){
    if(!in_array($new_val, $a){
        $a[] = $new_val;
        //do other stuff
    }
}
?>

<?php
$a = array();
while($new_val = 'get over 100k email addresses already lowercased'){
    if(!isset($a[$new_val]){
        $a[$new_val] = true;
        //do other stuff
    }
}
?>

由于问题的重点不是数组冲突,我想补充一点,如果你害怕$a[$new_value]的插入冲突,你可以使用$a[md5($new_value)]。它仍然可能导致冲突,但在从用户提供的文件(http://nikic.github.com/2011/12/28/Supercolliding-a-PHP-array.html)读取时,将避免可能的DoS攻击

EN

回答 1

Stack Overflow用户

发布于 2012-11-21 06:22:45

第二个会更快,因为它只查找特定的数组键,并且不需要遍历整个数组,直到找到它(如果没有找到,将查找每个数组元素)

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13483219

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档