php无限级分类
表结构
CREATE TABLE `test` ( `id` int(11) NOT NULL AUTO_INCREMENT, `pid` int(11) NULL DEFAULT NULL, `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '名称', PRIMARY KEY (`id`) USING BTREE ) ENGINE = MyISAM AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
ThinkPHP5/ThinkPHP6框架举例
<?php namespace app\common\model; use think\Collection; use think\Model; class Test extends Model { public static function getInfinite($pid = 0, &$result = [], $blank = 0) { $res = self::where('pid', $pid)->select(); $blank += 2; foreach ($res as $k => $v) { $cate_name = '|--' . $v->name; $v->content = str_repeat(' ', $blank) . $cate_name; $result[] = $v; self::getInfinite($v->id, $result, $blank); } return Collection::make($result)->toArray(); } }
打印结果如下
^ array:7 [▼ 0 => array:4 [▼ "id" => 1 "pid" => 0 "name" => "A一级" "content" => " |--Test" ] 1 => array:4 [▼ "id" => 2 "pid" => 1 "name" => "A二级" "content" => " |--Test" ] 2 => array:4 [▼ "id" => 3 "pid" => 2 "name" => "A三级" "content" => " |--Test" ] 3 => array:4 [▼ "id" => 4 "pid" => 0 "name" => "B一级" "content" => " |--Test" ] 4 => array:4 [▼ "id" => 5 "pid" => 4 "name" => "B二级" "content" => " |--Test" ] 5 => array:4 [▼ "id" => 6 "pid" => 0 "name" => "C一级" "content" => " |--Test" ] 6 => array:4 [▼ "id" => 7 "pid" => 0 "name" => "D一级" "content" => " |--Test" ] ]
无限极分类其中的一种输出方式,主要用于新增菜单分类的选择等!!!
未完待续