考虑以下代码片段:
例子#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
是
- 在特定情况下如何确定哪种方法更好?
- 除了使用临时表之外,也许还有其他技巧
$array_index
。我不记得其他编程语言中有类似的情况,一切都准备好了
也请注意关联键。
有人已经问过非常类似的问题:
- in_array 和 isset 哪个更快? https://stackoverflow.com/questions/13483219/what-is-faster-in-array-or-isset