PHP 无限级分类最佳实践

function infiniteSort($data, $showFName, $titleFName, $pidFName = 'pid', $idFName = 'id', $levelFName = 'level', $pid = 0, $level = 0)
{
    $tree = array();

    foreach ($data as $key => $value) {

        if ($value[$pidFName] == $pid) {
            $value[$levelFName] = $level;
            $value[$showFName] = str_repeat('  ', $level) . '|-' . $value[$titleFName];
            $tree[] = $value;
            unset($data[$key]);
            $tempArr = infiniteSort($data, $showFName, $titleFName, $pidFName, $idFName, $level, $value[$idFName], $level + 1);
            if(!empty($tempArr)){
                $tree = array_merge($tree, $tempArr);
            }
        }

    }

    return $tree;
}

注意:
1、$data 已经asc排序过的所有数据
2、$showFName 显示名字的字段名(格式化过的)
3、$titleFName 标题的字段名(无格式化)
4、$levelFName 层级字段名
5、$pidFName 父id的字段名
6、$idFName id的字段名

所有原创文章采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可。
您可以自由的转载和修改,但请务必注明文章来源并且不可用于商业目的。
本站部分内容收集于互联网,如果有侵权内容、不妥之处,请联系我们删除。敬请谅解!

添加新评论

  关于博主

当你发现自己的才华撑不起野心时,就请安静下来学习吧

  近期评论

  •  oevsgwftiw: 这篇文章不错!
  •  tptzkwumow: 这篇文章不错!
  •  higxcaasal: 这篇文章不错!
  •  gbkzxsngnm: 这篇文章不错!
  •  amozacdtyp: 作者的才华横溢,让这篇文章成为了一篇不可多得的艺术品。
  •  jpxtzzllvr: 内容的丰富性和深度让人仿佛置身于知识的海洋,受益匪浅。
  •  wjlsiejlxz: 作者的观点新颖且实用,让人在阅读中获得了新的思考和灵感。
  •  vlbfsfopgo: 建议引入反面案例,增强辩证性。
  •  qspdecneno: 跳出常规思维,角度独特,令人耳目一新。
  •  cuokmcjfrz: 建议控制调侃频率,避免消解主题深度。

很多东西宁缺毋滥,流星的光芒短暂而灼热闪耀。

让你变得更好的那个人,往往是你觉得很难与之相处的那个人。—— by 小宇

觉得自己做的到和不做的到,其实只在一念之间。

路在自己脚下,没有人可以决定我的方向。

你的选择是做或不做,但不做就永远不会有机会。

凡事顺其自然,遇事处于泰然,得意之时淡然,失意之时坦然,艰辛曲折必然,历尽沧桑悟然。