次のコード スニペットを検討してください。
例 #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
。私は他のプログラミング言語で同様の状況を覚えていません。
連想キーにも注意してください。
誰かがすでに非常によく似た質問をしました: