Veran, tengo que generar un array, que imite la siguiente estructura html:
Código HTML:
Ver original
Para ello me he creado este array:
Código PHP:
$config['menu'] = array(
1 => array(
'ItemText' => 'Sliders',
'ItemLink' => 'sliders',
'ParentID' => null,
),
2 => array(
'ItemText' => 'Pages',
'ItemLink' => 'pages',
'ParentID' => null,
),
3 => array(
'ItemText' => 'Pages with Sidebar',
'ItemLink' => 'sidebar',
'ParentID' => 2,
),
4 => array(
'ItemText' => 'Portfolio Pages',
'ItemLink' => 'sidebar',
'ParentID' => 2,
),
5 => array(
'ItemText' => '1 Column with SIdebar',
'ItemLink' => 'gamerack',
'ParentID' => 4,
),
6 => array(
'ItemText' => 'Contact',
'ItemLink' => 'contacto',
'ParentID' => null,
),
);
Lo que necesito, es poder emular con los datos que brindo en el array, la estructura anterior. Para ello he creado este proceso:
Código PHP:
foreach ($menu as &$menuItem){$menuItem['Children'] = array();} //Asignamos hijos vacios
$contachild=0;
foreach ($menu as $ID => &$menuItem){ //Añadimos los hijos a los padres
if ($menuItem['ParentID'] != null){
$menu[$menuItem['ParentID']]['Children'][$contachild] = &$menuItem;$contachild++;
}
}
foreach (array_keys($menu) as $ID){ //Eliminamos los hijos
if ($menu[$ID]['ParentID'] != null){unset($menu[$ID]);}
}
$contamenu = 0;
foreach ($menu as $Itemmenu){
$contamenu++; $class = "";
if($contamenu==1){$class="first";}
if(count($Itemmenu['Children'])>0){$class+=" parent";}
echo "<li class='".$class."'>";
echo "<a href='".base_url($Itemmenu['ItemLink'])."'><span>".strip_tags($Itemmenu['ItemText'])."</span></a>";
if(count($Itemmenu['Children'])>0){
$contasubmenu = 0;
for($i=0;$i<count($Itemmenu['Children']);$i++){
$contasubmenu++;$subclass="";
if($contasubmenu==1){echo "<ul class='sub-menu'>";$subclass="first";}
echo "<li class='".$subclass."'>";
echo "<a href='".base_url($Itemmenu['Children'][$i]['ItemLink'])."'><span>".strip_tags($Itemmenu['Children'][$i]['ItemText'])."</span></a>";
//echo var_dump($Itemmenu['Children']);
echo "</li>";
}
if($contasubmenu>0){echo "</ul>";}
}
echo "</li>";
}
Alguien me puede hechar una mano?