Как я могу найти ключ массива из многомерного массива и вернуть найденное значение ключа с ключом родительского массива, если он существует.Например, у меня есть собственный массив:
$array = [
'type' => 'vacancy',
'needs' => ['root' => 'active'],
'market' => 'shopping',
'red' => 'color',
'education' => 'learning',
'fruits' => [
'red' => 'apple',
'cool' => 'cherry'
]
];
Например, мне нужен ключ поиска red
из текущего массива.Как вы видите в этом массиве существует 2 элемента с ключом red
.Если у массива одинаковые ключи, то функция возвращает пример массива в качестве ответа:
[
0 => ['red' => 'color'],
1 => ['red' => 'apple']
]
Если ключ поиска (пример type
) находится только один раз внутри массива, тогда ответ будет таким:
['type' => 'vacancy']
Я устал:
function searchKey($key, $array) {
foreach ($array as $k => $v) {
if($key === $k) {
return [$k => $v];
} elseif(is_array($v)) {
return searchKey($key, $v);
} elseif(is_array($k)) {
return searchKey($key, $k);
}
}
return false;
}
Когда я ищу ключ root
из массива, результат верен, но когда я ищу ключ red
, возвращаю false
.Как может быть решена моя функция или есть какие-то методы повышения эффективности поиска ключа и получения результата для моих нужд?