2016-09-14 59 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; 
     } 
    } 
} 
相關問題