Поскольку массив - это массив, а PHP ничего не знает о деревьях, вы должны самостоятельно определить путь к многомерному массиву, но это не сложно.
Итератив
$result = $tree;
foreach ($path as $step) {
$result = $result[$step];
}
или рекурсивный
function resolve_tree ($tree, $path) {
return empty($path)
? $tree
: resolve_tree ($tree[$path[0]], array_slice($path, 1));
}
Обратите внимание, что это простейшие решения.Например, вы должны позаботиться о том, чтобы данный ключ из $path
существовал, прежде чем пытаться получить к нему доступ.
Обновление: я пропустил часть "set" в вопросе.Без ссылок это не так уж забавно, поэтому я предлагаю полностью переключаться на объекты вместо массивов.Не обязательно, чтобы вы создали класс.Вы можете просто использовать stdClass
.Это даже чувствовало бы немного больше "дерева" ish