多维数组树菜单-子菜单功能


Multidimension array tree Menu-Submenu function

我有这个PHP问题,我应该在那里构建一个多维树。

这些是数组内的字符串:

 >nro_menu       > Menu ID                                                                 |
 dsc_menu       > Menu description                                                        |
 nro_menu_fk    > The parentmenu ID (menu > submenu)                                      |
 nro_ordem_menu > Show the order of childmenu inside the parentmenu                       
 leaf           > "Y" > it's a leaf, no childmenu / "N" > not a leaf, does have childmenu |

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'
)
);
$tree = array();
buildTree($tree, $rs);
echo "<pre>", print_r($tree, true);

我必须构建"buildTree"函数,使用$tree和$rs创建一个输出,一次显示所有菜单和子菜单,无论它们有多深。像这样:

Array
(
[Pedidos] => Array
 (
  [Lançar] => 4119
  [Manutenção] => 4120
)
 [Relatórios] => Array
(
  [Emitir Pedido] => 3138
  [Pedidos Colocados No Mês] => 3139
  [Histórico do Cliente] => 3140
  [Entregas Efetuadas] => 3141
    )
)

我需要完成这个练习才能在工作中获得批准。

但是我没有找到构造函数的逻辑。有人帮我???请

试试这个:

function buildTree($ary){
  $output = '';
  foreach($ary as $a){
    $output .= '<dl>';
    foreach($a as $i => $v){
      $output .= "<dt>$i</dt><dd>$v</dd>";
    }
    $output .= '</dl>';
  }
  return $output;
}
echo buildTree($rs);