Духовность™
Продвинутый новичок
Помогите с рекурсией
Народ, помогите, хрен знает какой час пытаюсь написать
рекурсивную функцию, а она не хочет работать, вот хоть убей.
Вот объясните, ГДЕ ТУТ ОШИБКА?
Нужно создать массив вида:
из массива serialize
данная функция работает только в том случае, если хранилище $tree объявить как global. Я уже мозг сломал. В чем ошибка????
PS: ненавижу рекурсию, просто терпеть не могу.
Народ, помогите, хрен знает какой час пытаюсь написать
рекурсивную функцию, а она не хочет работать, вот хоть убей.
Вот объясните, ГДЕ ТУТ ОШИБКА?
Нужно создать массив вида:
PHP:
$tree = array(
0 => array( // дети рута
'company' => array('id' => 1, 'type' => 'page'),
'news' => array('id' => 2, 'type' => 'news'),
),
1 => array( // дети для id=1
'news' => array('id' => 3, 'type' => 'news'),
)
// и т.д.
);
PHP:
$serialize = 'a:5:{i:0;a:2:{i:0;a:3:{s:2:"id";s:1:"1";s:3:"pid";s:1:"0";s:15:"structure_alias";s:5:"admin";}i:1;a:3:{s:2:"id";s:1:"4";s:3:"pid";s:1:"0";s:15:"structure_alias";s:2:"my";}}i:1;a:1:{i:0;a:3:{s:2:"id";s:1:"2";s:3:"pid";s:1:"1";s:15:"structure_alias";s:4:"user";}}i:2;a:1:{i:0;a:3:{s:2:"id";s:1:"3";s:3:"pid";s:1:"2";s:15:"structure_alias";s:4:"edit";}}i:4;a:1:{i:0;a:3:{s:2:"id";s:1:"5";s:3:"pid";s:1:"4";s:15:"structure_alias";s:7:"adverts";}}i:3;a:1:{i:0;a:3:{s:2:"id";s:1:"6";s:3:"pid";s:1:"3";s:15:"structure_alias";s:3:"new";}}}';
make(unserialize($serialize));
function make(&$data, $k=0, $indent=-1)
{
if (empty($data[$k]))
{
return ;
}
$indent++;
foreach ($data[$k] as $item)
{
$item['indent'] = $indent;
$tree[$indent][$item['structure_alias']] = $item;
$t = make($data, $item['id'], $indent);
if ($t)
{
list($key, $value) = each($t);
list($key2, $value2) = each($value);
$tree[$key][$value2['structure_alias']] = $value2;
}
}
return $tree;
}
PS: ненавижу рекурсию, просто терпеть не могу.