Доступ к ноде массива

OlegEF

Новичок
День добрый.

Есть древовидный массив в виде (любой уровень вложенности):
['a'] => Array ( ['b'] => Array ( ['c'] => Array ...

И есть идентификаторы нод пути к дочернему элементу, которые представлены также в виде простого массива ('a','b','c').

Как имея такой массив обратиться к дочернему элементу?
т.е. получить что-то вроде $arr=$tree['a']['b']['c']...

Спасибо.
 

rotoZOOM

ACM maniac
PHP:
function index($src,$idx)
{
	if (count($idx)==0)
	{
		return $src;
	}
	return isset($src[$idx[0]]) ? index($src[$idx[0]],array_slice($idx,1)) : null;
}
$src = array ('a' => array('b' => array ('c' => 'd')));
var_dump (index($src,array('a','b','c')));
 

OlegEF

Новичок
rotoZOOM, спасибо то что надо.

т.е. как ни крути без рекурсии не обойтись?
 

MiksIr

miksir@home:~$
PHP:
$nested = $src;
foreach($idx as $item) {
  if (!is_array($nested)) {
     $nested = null;
     break;
  }
  $nested = isset($nested[$item]) ? $nested[$item] : null;
}
Если устроит не полное совпадение пути, то $nested = null; можно убрать.
 
Сверху