2016-09-14 6 views
0

複数の配列に対して同様の値の配列をチェックするより効率的な方法がありますか? は、ここに私のコードです:2アレイのforeach値をチェックするより効率的な方法

foreach ($city as $option) { 
    if (in_array($option, $optionarray1)) { 
     $tables[] = 'newvalue1'; 
    } else if (in_array($option, $optionarray2)) { 
     $tables[] = 'newvalue2'; 
    } else if (in_array($option, $optionarray3)) { 
     $tables[] = 'newvalue3'; 
    } 
} 
+1

比較ごとに異なる値を追加している場合は、実際にはそうではありません。 –

答えて

1

使用array_flip()あなたは線形検索を毎回行う必要はありませんので、連想配列に各$optionarrayXをオンにします。あなたの代わりに、コードを繰り返すのネストされたループを使用できるように

$optionhash1 = array_flip($optionarray1); 
$optionhash2 = array_flip($optionarray2); 
$optionhash3 = array_flip($optionarray3); 

次に、あなたは、すべての配列にこれらを置くことができます。

$optionhashes = array(1=>$optionhash1, 2=>$optionhash2, 3=>$optionhash3); 

foreach ($city as $option) { 
    foreach ($optionhashes as $i => $hash) { 
     if (array_key_exists($option, $hash)) { 
      $tables[]= 'newvalue' . $i; 
      break; 
     } 
    } 
} 
関連する問題