Задать вопрос
@alezzz

Как найти значение по ключу в многомерном ассоциированном массиве?

Есть многомерный массив неизвестного уровня вложенности.
Например такой:
Array
(
	[key0] => value0
	[key1] => Array
	(
		[key2] => value1
        [key3] => value2
    )
    
	[key4] => Array
	(
		[key5] => Array
		(
			[key6] => value3
			[key7] => Array
			(
				[key8] => value5
				[key9] => value6
			)
		)
		[key10] => value7
	)
)

Нужно найти значение элемента с заданным ключом. Например, key5. Можно принять что ключи уникальные и искать до первого совпадения.
Для поиска по значению есть array_search. Неужели нет простого решения для поиска по ключу?
  • Вопрос задан
  • 83 просмотра
Подписаться 1 Простой 1 комментарий
Пригласить эксперта
Ответы на вопрос 2
SilenceOfWinter
@SilenceOfWinter Куратор тега PHP
та еще зажигалка...
array_walk_recursive и возможно array_column
Ответ написан
@alezzz Автор вопроса
В общем есть решения, которые могут найти значения элементов, которые не содержат массив внутри. В моем примере это key0, key6 и тп.
Пример:
function array_column_recursive(array $haystack, $needle) {
    $found = [];
    array_walk_recursive($haystack, function($value, $key) use (&$found, $needle) {
        if ($key == $needle)
            $found[] = $value;
    });
    return $found;
}

Но не получается получить элементы внутри которых содержатся массивы. Например key1, key4, key5 и тп
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы