Câu hỏi này chỉ dành cho tôi vì tôi luôn thích viết mã được tối ưu hóa có thể chạy trên các máy chủ chậm rẻ (hoặc máy chủ có RẤT NHIỀU lưu lượng truy cập)
Tôi nhìn xung quanh và tôi không thể tìm thấy câu trả lời. Tôi đã tự hỏi điều gì nhanh hơn giữa hai ví dụ đó, hãy nhớ rằng các khóa của mảng trong trường hợp của tôi không quan trọng (mã giả tự nhiên):
<?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
}
}
?>
Vì điểm của câu hỏi không phải là xung đột mảng, tôi muốn nói thêm rằng nếu bạn sợ va chạm các chèn cho $a[$new_value]
, bạn có thể sử dụng $a[md5($new_value)]
. nó vẫn có thể gây ra va chạm, nhưng sẽ tránh được một cuộc tấn công DoS có thể xảy ra khi đọc từ tệp do người dùng cung cấp ( http://nikic.github.com/2011/12/28/Supercolliding-a-PHP-array.html )