是否有更有效的方法来预先检查数组中是否存在针对多个数组的类似值? 这是我的代码:
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';
}
}
答案 0 :(得分: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;
}
}
}