实现无限级分类时,父级ID不是和主键ID关联怎么处理数据
最近要优化一下项目的代码,其中有一块无限极分类是这么处理的
$tree = new stdClass(); if (!empty($cateGoryInfo)) { foreach ($cateGoryInfo as $key => $val) {//一级菜单数据获取 if ($val->parent_id == 0) { if ($val->category_img) { $val->category_img = AppUrl::image($val->category_img); } $val->type = CateType::description($val->type); $tree->{$key} = $val; unset($cateGoryInfo{$key}); } } foreach ($tree as $i => $item) { $tree->{$i}->children = new stdClass(); $k = 0; foreach ($cateGoryInfo as $key => $val) {//二级菜单数据获取 if ($item->category_id == $val->parent_id) { if ($val->category_img) { $val->category_img = AppUrl::image($val->category_img); } $val->type = CateType::description($val->type); $tree->{$i}->children->{$k} = $val; unset($cateGoryInfo{$key}); $k++; } } } foreach ($tree as $i => $item) { foreach ($item->children as $k => $v) { $tree->{$i}->children->{$k}->children = new stdClass(); $ke = 0; foreach ($cateGoryInfo as $key => $val) {//三级菜单获取 if ($val->parent_id == $v->category_id) { if ($val->category_img) { $val->category_img = AppUrl::image($val->category_img); } $val->type = CateType::description($val->type); $tree->{$i}->children->{$k}->children->{$ke} = $val; $ke++; } } } } } return $tree;
当我纳闷之前为什么当时不用递归或者引用去写呢 我去看了下表设计…
后知后觉这种表设计为啥用不了引用写法了…(因为category_id不是唯一,重组数组重复的值都会被覆盖)递归写法也是 直接死循环 为什么你们要这么设计表
![]()
![]()
然后我试过挺多方法 还是没法优化它。各位看官有什么好的意见没有,下图是我用递归和引用写的,没出正确结果
推荐文章: