Cómo thinkphp utiliza la recursividad para lograr una clasificación infinita
Una función recursiva es una función que se autollama y se llama a sí misma directa o indirectamente en el cuerpo de la función, pero se deben establecer las condiciones para la autollamada. Si se cumplen las condiciones, se llama a la función en sí. Si no se cumplen las condiciones, la autollamada de la función finaliza y luego devuelve el control principal del proceso actual a la función de nivel superior para su ejecución. como esto.
Ideas:
Primero, establezca la base de datos y las tablas correspondientes:
Tenga en cuenta la relación de clave externa entre pid e id. El pid de nivel superior es 0. .
class?Tree{
//Definir una matriz vacía
static?public?$treeList?=?array();
//Recibe una matriz bidimensional que contiene $data, $pid por defecto es 0 y $level por defecto es 1
static?public?function?tree($data,$pid=0,$level? =?1){
foreach($ datos?$v){
if($v['pid']==$pid){
$v['level']=$level;
self::$treeList[]=$v;//cargar el resultado en $treeList
self::tree($ datos,$v['id'],$nivel+1);
}
}
return?self::$treeList?; p> p>
}
}
Siguiente llamada al método
public?function?index (){? $res =M('cate')->select();
$res=Árbol::árbol($res);
$this->cate=$res; ?
$this->display();
}
Mostrar en la página de plantilla de tabla:
Imágenes válidas: