Função recursiva
Boa tarde pessoal,
estou criando uma função recursiva para montar um menu dinâmico. Mas não está dando muito certo.
Possuo o seguinte código. O array simula os dados vindos do banco
<?php
$rs = array(
array(
'nro_menu' => 3136,
'dsc_menu' => 'Pedidos',
'nro_menu_fk' => 1,
'nro_ordem_menu' => '{0}',
'leaf' => 'n'
),
array(
'nro_menu' => 3137,
'dsc_menu' => 'Relatórios',
'nro_menu_fk' => 1,
'nro_ordem_menu' => '{1}',
'leaf' => 'n'
),
array(
'nro_menu' => 4119,
'dsc_menu' => 'Lançar',
'nro_menu_fk' => 3136,
'nro_ordem_menu' => '{0,0}',
'leaf' => 'y'
),
array(
'nro_menu' => 4120,
'dsc_menu' => 'Manutenção',
'nro_menu_fk' => 3136,
'nro_ordem_menu' => '{0,1}',
'leaf' => 'y'
),
array(
'nro_menu' => 3138,
'dsc_menu' => 'Emitir Pedido',
'nro_menu_fk' => 3137,
'nro_ordem_menu' => '{1,0}',
'leaf' => 'y'
),
array(
'nro_menu' => 3139,
'dsc_menu' => 'Pedidos Colocados No Mês',
'nro_menu_fk' => 3137,
'nro_ordem_menu' => '{1,1}',
'leaf' => 'y'
),
array(
'nro_menu' => 3140,
'dsc_menu' => 'Histórico Do Cliente',
'nro_menu_fk' => 3137,
'nro_ordem_menu' => '{1,2}',
'leaf' => 'y'
),
array(
'nro_menu' => 3141,
'dsc_menu' => 'Entregas Efetuadas',
'nro_menu_fk' => 3137,
'nro_ordem_menu' => '{1,3}',
'leaf' => 'y'
)
);
/Início da função buildTree/
function buildTree(array &$tree, array $elements, $parentId = 1) {
foreach ($elements as $element) {
if ($element['nro_menu_fk'] == $parentId) {
$children = buildTree($tree, $elements, $element['nro_menu']);
if ($children) {
$tree[$element['dsc_menu']][$children['dsc_menu']] = $children['nro_menu'];
}else{
$tree[$element['dsc_menu']] = array();
}
return $element;
}
}
}/Fim da função buildTree/
$tree = array();
buildTree($tree, $rs);
echo "<pre>", print_r($tree, true);
O mais próximo que cheguei foi isso
Array
(
[Lançar] => Array
(
)
[Pedidos] => Array
(
[Lançar] => 4119
)
)
Mas deveria ficar assim
Array
(
[Pedidos] => Array
(
[Lançar] => 4119
...
)
...
)
Espero que possam me ajudar! Valeu !!
Discussão (0)
Carregando comentários...