คำถามนี้เป็นเพียงสำหรับฉันเพราะฉันมักจะชอบเขียนโค้ดที่ปรับให้เหมาะสมซึ่งสามารถทำงานบนเซิร์ฟเวอร์ที่ช้าราคาถูก (หรือเซิร์ฟเวอร์ที่มีปริมาณการใช้งานมาก)
ฉันมองไปรอบ ๆ และไม่สามารถหาคำตอบได้ ฉันสงสัยว่าอะไรจะเร็วกว่าระหว่างสองตัวอย่างนี้โปรดทราบว่าคีย์ของอาร์เรย์ในกรณีของฉันไม่สำคัญ (รหัสหลอกตามธรรมชาติ):
<?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 )