簡體   English   中英

多維數組樹菜單子菜單功能

[英]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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM