PHP: Поиск многомерного массива => получить array_keys - PullRequest
0 голосов
/ 09 мая 2018

Какой самый лучший / самый быстрый способ получить ключи массива путем поиска значения в массивах 2-го уровня?

$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')
);

Например, поиск по pink должен вернуть array('name_03', 'name_05')

Ответы [ 2 ]

0 голосов
/ 09 мая 2018

вы можете использовать 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

0 голосов
/ 09 мая 2018

Простого 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...