rockrgo 138 Denunciar post Postado Maio 18, 2015 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 !! Compartilhar este post Link para o post Compartilhar em outros sites