考虑以下代码片段:
示例 #1
$array = Array(1,2,3,4,5,6,7);
$array_test = Array(3,5,4,7,3,6,7,8,8,9,3);
foreach($array_test as $value) {
if(in_array($value, $array)) {
// do some magic here
}
}
示例 #2
$array = Array(1,2,3,4,5,6,7);
$array_test = Array(3,5,4,7,3,6,7,8,8,9,3);
$array_index = Array();
foreach($array as $value) {
$array_index[ $value ] = true;
}
foreach($array_test as $value) {
if(isset($array_index[ $value ])) {
// do some magic here
}
}
显然,这两个片段都做同样的工作。在某些数组示例中,示例 #1 比示例 #2 快。
我确信我们都处于这两种情况,但是我的问题是:
- 我应该总是选择#2吗?
- 我什么时候应该选择#1?当大小
$array * $array_test
< 10 时?<100?<1000? - 如何确定在特定情况下哪种方法更好?
- 除了使用 temp table 之外,也许还有其他技巧
$array_index
。我不记得其他编程语言中的类似情况,一切都准备好了
请注意关联键。
有人已经问过非常相似的问题: