这个问题仅仅是对我来说,因为我总是喜欢编写优化的代码,也可以运行在廉价的慢速服务器(或者流量大的服务器)
我环顾四周,找不到答案。我想知道在这两个例子中哪个更快,记住数组的键在我的例子中并不重要(自然是伪代码) :
<?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 攻击