2010-11-30 14 views
0

私は配列を持っています:liツリーメニューから配列

親1は最初のステップです!結果は

Array 
(
    [0] => Array 
     (
      [categoryID] => 1 
      [parent] => 1 
      [name] => 111 
     ) 

    [1] => Array 
     (
      [categoryID] => 2 
      [parent] => 1 
      [name] => 2222 
     ) 

    [2] => Array 
     (
      [categoryID] => 3 
      [parent] => 2 
      [name] => 3333 
     ) 
    [3] => Array 
     (
      [categoryID] => 4 
      [parent] => 3 
      [name] => 444 
     ) 

) 

私はULとのli要素をツリー構造を必要とする:

<ul> 
<li>111</li> 
<li>222 
    <ul> 
    <li>333 
    <ul> 
    <li>444</li> 
    </ul> 
    </li> 
    </ul> 
</li> 
</ul> 

感謝を!

+3

ウル列を見て、これらはquestiion – XMen

+0

を編集してください異なる結果と宿題申し訳 – stillstanding

+0

のように見えます!私は私の質問を変える – user515503

答えて

0
<?php 

$input_array = array(
    array(
     'categoryID' => 1, 
     'parent' => 1, 
     'name' => 111, 
    ), 
    array(
     'categoryID' => 2, 
     'parent' => 1, 
     'name' => 2222, 
    ), 
    array(
     'categoryID' => 3, 
     'parent' => 2, 
     'name' => 3333, 
    ), 
    array(
     'categoryID' => 4, 
     'parent' => 3, 
     'name' => 444, 
    ) 
); 

function buildHtmlList($array) 
{ 
    $maxlevel = 0; 

    // just to be sure that the array keys are continuous 
    $array = array_values($array); 

    foreach ($array as $key => $value) 
    { 
     $previousparent = isset($array[$key - 1]['parent']) ? $array[$key - 1]['parent'] : null; 
     $nextparent = isset($array[$key + 1]['parent']) ? $array[$key + 1]['parent'] : null; 

     if ($value['parent'] != $previousparent) 
     { 
      echo "\n<ul>"; 
      ++$maxlevel; 
     } 

     echo "\n<li>" . $value['name']; 

     if ($nextparent == $value['parent']) 
      echo "</li>"; 
    } 

    for ($i = 0; $i < $maxlevel; ++$i) 
    { 
     echo "\n</li>\n</ul>"; 
    } 
} 

buildHtmlList($input_array); 
0

この配列は、データベースから取得したように見えます。そのような場合は、MVCフレームワークを使用してください。それはあなたの人生をずっと簡単にします。

関連する問題