2016-09-14 58 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; 
     } 
    } 
} 
相关问题