0

再帰によってツリー階層を構築する必要があります。PHPを設定解除しなくてもすべて正常に動作しますが、すでに構築されている設定解除された要素が必要です。

問題:以下のコードでは、未設定の作業が行われますが、最初の再帰呼び出しが中断されるため、id=5 のデータ カテゴリの例ではレンダリングされません。

どんなアイデアでも、何が悪いのか非常に興味深い

 function renderMenu(&$tempTree, $parentId){
        foreach($tempTree as $row) {
            if ($row['parent_id'] == $parentId) {
                $id = $row["category_id"];
                echo $row['name'].'<br>';
                unset($tempTree[$id]);
               if (isset($row['has_child'])){
                   renderMenu($tempTree, $id);
                }

            }
        }
    }

$s=array ( '1' => Array ( 'category_id' => 1,
'parent_id' => 0,
'name' => '1' ),

'2' => Array ( 'category_id' => 2,
'parent_id' => 0,
'has_child' => true,
'name' => '2'),

'3' => Array ( 'category_id' => 3,
'parent_id' => 2,
'name' => '3'),

'4' => Array ( 'category_id' => 4,
'parent_id' => 2,
'name' => '4'),

'5' => Array ( 'category_id' => 5,
'parent_id' => 0,
'name' => '5' )
);



renderMenu($s,0);
4

1 に答える 1

1

エラーは次のとおりです。

 unset($tempTree[$id]);

そのはず:

 unset($row[$id]);

($tempTree 要素を $row として参照する foreach ループ内のように)

于 2013-08-02T18:12:10.200 に答える