PHP:搜索多维数组=>获取array_keys

时间:2018-05-09 10:53:04

标签: php arrays multidimensional-array associative-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')
);

例如,粉红色搜索应返回array('name_03', 'name_05')

2 个答案:

答案 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;
}

https://eval.in/1001516

答案 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