通过搜索二级数组中的值来获取数组键的最佳/最快方法是什么?
$test = array(
'name_01' => array('yellow', 'red', 'blue', 'black', 'white', 'purple'),
'name_02' => array('red', 'blue', 'white', 'green'),
'name_03' => array('blue', 'pink', 'purple', 'blue'),
'name_04' => array('white', 'black', 'red'),
'name_05' => array('yellow', 'white', 'pink', 'black')
);
例如,粉红色搜索应返回array('name_03', 'name_05')
答案 0 :(得分:2)
您可以使用in_array()
$test = array(
'name_01' => array('yellow', 'red', 'blue', 'black', 'white', 'purple'),
'name_02' => array('red', 'blue', 'white', 'green'),
'name_03' => array('blue', 'pink', 'purple', 'blue'),
'name_04' => array('white', 'black', 'red'),
'name_05' => array('yellow', 'white', 'pink', 'black')
);
print_r(find_keys($test, 'pink'));
function find_keys($arr, $find){
$keys = array();
foreach ($arr as $key => $value) {
if (!in_array($find, $value)) {
continue;
}
$keys[] = $key;
}
return $keys;
}
答案 1 :(得分:1)
foreach()
in_array()
就足够了
$search = 'pink';
foreach($test as $key=>$arr){
if(in_array($search,$arr)){
echo $key.PHP_EOL;
}
}
输出: - https://eval.in/1001513
如果您想将数组作为输出: - https://eval.in/1001533