@amatoriste

Как найти вложение в многомерном массиве и добавить элементы?

Привет всем!) Немного застопорился на задаче, прошу помощи)
Есть массив, к примеру
"it_array": [
		"select": ["val1", "val2", "val3"],
		"relations": [
			"relation_1_title": [
				"select": ["some_val"],
				"relations": [
					"relation_2_title": [
						"select": ["some_val1", "some_val2"],
						"relations": [
							"relation_3_title": []
						]
					]
				]
			]
		]
	]


Как мне найти relation_3_title и добавить туда ключи-значения? Таких вложений может быть очень много, мне нужно найти и изменить последний relation без вложения relation (title последней relation известно).
На ES6 это можно сделать изи - через .find, как сделать на php?
  • Вопрос задан
  • 422 просмотра
Решения вопроса 1
JimmDiGreez
@JimmDiGreez
Full-stack Developer
Найдено в гугле:
Рекурсивный вариант:
function getArray($array, $index) {
    if (!is_array($array)) return null;
    if (isset($array[$index])) return $array[$index];
    foreach ($array as $item) {
        $return = getArray($item, $index);
        if (!is_null($return)) {
            return $return;
        }
    }
    return null;
}

Итеративный вариант:
function getArray($array, $index) {
    $queue = array($array);
    while (($item = array_shift($queue)) !== null) {
        if (!is_array($item)) continue;
        if (isset($item[$index])) return $item[$index];
        $queue = array_merge($queue, $item);
    }
    return null;
}


Источник
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Yan-s
Это решается при помощи рекурсии. Ищите "php поиск в многомерном массиве по ключу"
Ответ написан
Ваш ответ на вопрос

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

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