2010-11-30 6 views
0

J'ai tableau:li arbre menu de tableau

parent 1 est la première étape!

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 
     ) 

) 

En conséquence, je besoin d'une structure d'arbre avec des éléments ul et li:

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

Merci!

+3

regard sur ur tableau et le résultat ce sont différentes s'il vous plaît modifier le questiion – XMen

+0

ressemble devoirs – stillstanding

+0

Désolé! Je change ma question – user515503

Répondre

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

Ce tableau ressemble beaucoup à une base de données. Si c'est le cas, utilisez simplement un framework MVC. Cela rendra votre vie tellement plus facile.