Habersi esto te sirve, a mi me funcionó.
Código PHP:
Ver original<?php
$arrCategorias[0]=array('id_categoria'=>'1', 'id_cat_principal'=>'0', 'nombre'=>'Deportes'); $arrCategorias[1]=array('id_categoria'=>'2', 'id_cat_principal'=>'0', 'nombre'=>'Sociedad'); $arrCategorias[2]=array('id_categoria'=>'3', 'id_cat_principal'=>'2', 'nombre'=>'Economia'); $arrCategorias[3]=array('id_categoria'=>'4', 'id_cat_principal'=>'2', 'nombre'=>'Religion'); $arrCategorias[4]=array('id_categoria'=>'5', 'id_cat_principal'=>'1', 'nombre'=>'Tierra'); $arrCategorias[5]=array('id_categoria'=>'6', 'id_cat_principal'=>'1', 'nombre'=>'Mar'); $arrCategorias[6]=array('id_categoria'=>'7', 'id_cat_principal'=>'5', 'nombre'=>'Futbol'); $arrCategorias[7]=array('id_categoria'=>'8', 'id_cat_principal'=>'5', 'nombre'=>'Tenis'); $arrCategorias[8]=array('id_categoria'=>'9', 'id_cat_principal'=>'7', 'nombre'=>'Futbol 7'); $arrCategorias[9]=array('id_categoria'=>'10', 'id_cat_principal'=>'7', 'nombre'=>'Futbol 11'); $arrCategorias[10]=array('id_categoria'=>'11', 'id_cat_principal'=>'0', 'nombre'=>'Test'); $arrCategorias[11]=array('id_categoria'=>'12', 'id_cat_principal'=>'11', 'nombre'=>'Subtest'); $arrCategorias[12]=array('id_categoria'=>'13', 'id_cat_principal'=>'12', 'nombre'=>'SubSubtest'); $arrCategorias[13]=array('id_categoria'=>'14', 'id_cat_principal'=>'13', 'nombre'=>'SubSubSubtest');
imprime();
function imprime($padre=0){
global $arrCategorias;
//Validar que haya submenu (evita que se escriban <ul></ul> vacios).
$haySubMenu=false;
for($i=0; $i<count($arrCategorias) && !$haySubMenu; $i++){ $haySubMenu=$arrCategorias[$i]['id_cat_principal']==$padre;
}
if(!$haySubMenu) return;
//Escribir listado.
echo "<ul>";
foreach($arrCategorias as $cat){
if($cat['id_cat_principal']==$padre){
echo "<li>".$cat['nombre'];
imprime($cat['id_categoria']);
echo "</li>";
}
}
echo "</ul>";
}
?>
Saludos, Alex.