Этот вопрос предназначен только для меня, поскольку мне всегда нравится писать оптимизированный код, который может работать и на дешевых медленных серверах (или серверах с ОЧЕНЬ интенсивным трафиком).
Я огляделась и не нашла ответа. Мне было интересно, что быстрее между этими двумя примерами, имея в виду, что ключи массива в моем случае не важны (естественно, псевдокод):
<?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)]
. он по-прежнему может вызывать коллизии, но устранит возможную DoS-атаку при чтении из файла, предоставленного пользователем ( http://nikic.github.com/2011/12/28/Supercolliding-a-PHP-array.html )