0

私は多次元ツリーを構築する必要があるこの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);

$tree と $rs を使用して「buildTree」関数を作成し、すべてのメニューとサブメニューを一度に表示する出力を、その深さに関係なく作成する必要があります。このようなもの:

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
    )
)

仕事で承認されるには、この演習を完了する必要があります。

しかし、関数を構築するためのロジックが見つかりませんでした。誰か助けて ???お願いします

4

1 に答える 1