// 调用的数组
$array = [['id' => 1, 'pid' => 0, 'name' => '分类ID1'],['id' => 2, 'pid' => 0, 'name' => '分类ID2'],['id' => 3, 'pid' => 1, 'name' => '分类ID3,父级ID1'],['id' => 4, 'pid' => 2, 'name' => '分类ID4,父级ID2'],['id' => 5, 'pid' => 3, 'name' => '分类ID5,父级ID3'],['id' => 6, 'pid' => 4, 'name' => '分类ID6,父级ID4'],
];

递归算法

function recursive(array $array, int $pid = 0)
{$result = [];foreach ($array as $key => $value) {if ($value['pid'] == $pid) { // 如果找到传过来的父级ID$value['child'] = recursive($array, $value['id']); // 把该条目的ID做为父类,寻找其下级if (!$value['child']) {unset($value['child']);}$result[] = $value;}}return $result;
}

不传 pid 则返回所有的结果,例如 pid 传2 recursive($array, 2) 则输出:

Array
([0] => Array([id] => 4[pid] => 2[name] => 分类ID4,父级ID2[child] => Array([0] => Array([id] => 6[pid] => 4[name] => 分类ID6,父级ID4)))
)

数组引用

function arrayRefer(array $rows, int $pid = 0)
{$items = [];foreach ($rows as $row) {$items[$row['id']] = $row; // 新数组的第一级,索引为id的值,1,2,3...}foreach ($items as $item) {// 引用自身,将值追加到数组里面,pid是多少就追加到哪个$items[$item['pid']]['child'][$item['id']] = &$items[$item['id']]; }return $items[$pid]['child'] ?? [];
}

例如传 pid 为2 arrayRefer($array, 2) 输出:

Array
([4] => Array([id] => 4[pid] => 2[name] => 分类ID4,父级ID2[child] => Array([6] => Array([id] => 6[pid] => 4[name] => 分类ID6,父级ID4)))
)

两者选一,性能未知

PHP 递归 无限级分类相关推荐

  1. php无限分类原理,php 递归无限级分类原理和实现代码

    递归无限级分类的原理: 每一个分类都记录它的父级id,当为顶级分类时,父级id为0.这样无论哪个分类,都可以通过父级id一层一层去查明它的所有父级,以便清楚知道它所属何种分类,层级深度为几. 对数据进 ...

  2. php递归 返回数组,php 递归 无限级分类并返回数组的例子

    /** * 递归 无限级分类 返回数组 * link:www.jquerycn.cn * date:2013/2/21 */ $conn = mysql_connect('localhost','ro ...

  3. php无限级分类是什么意思,PHP 无限级分类(递归)

    网上有很多,这是我自己做测试用的 $arr = array( array('id'=>1,'name'=>'电脑','pid'=>0), array('id'=>2,'name ...

  4. php查找顶级分类,php 无限级分类 获取顶级分类ID,php顶级_PHP教程

    php 无限级分类 获取顶级分类ID,php顶级 有这样一个表,id是分类的ID,name是分类名称,pid是上级分类的ID. 现在有个分类ID,程序要找到它上级的上级的上级--分类的ID,简单说就是 ...

  5. 迭代与递归实现无限级分类

    无限级分类是开发中常见的情况了,在这里我收藏了下并整理了下常见的无限极分类算法总结归纳. <?php $arr = [1=>['id'=>1,'name'=>'家居','fat ...

  6. php如何对 mysql 中text类型拆分存入一个数组_PHP递归实现无限级分类,可选返回字符串和数组...

    正 文: 在一些复杂的系统中,要求对信息栏目进行无限级的分类,以增强系统的灵活性.那么PHP是如何实现无限级分类的呢?我们在本文中使用递归算法并结合mysql数据表实现无限级分类. 递归,简单的说就是 ...

  7. php无极分类非递归_PHP中的无限级分类、无限嵌套评论

    php中文网最新课程 每日17点准时技术干货分享 一般来说,递归被称为函数自身的调用. 递归在开发中的实际运用 N级分类 无限级的分类在平常的开发中是常见的需求,并且在不少面试题中都会碰到.不管你做什 ...

  8. php递归分组,PHP递归实现无限级分类

    本篇文章的内容是PHP递归实现无限级分类,现在分享给大家,有需要的朋友也可以参考一下,大家一起过来看看吧$datasection = array( array('id' => 1, 'name' ...

  9. php无极分类非递归_php实现无限级分类(递归方法)

    相信很多学php的很多小伙伴都会尝试做一个网上商城作为提升自己技术的一种途径.各种对商品分类,商品名之类的操作应该是得心应手,那么就可以尝试下无限级分类列表的制作了. 到网上一搜php无限极分类,很多 ...

最新文章

  1. 使用SQL如何把用逗号等字符隔开的字符串转换成列表,以及把列合并成符合隔开的字符串(转)...
  2. WebForm编辑器的相关资源
  3. hashcat离线碰撞md5
  4. Java异常处理的一些经验总结
  5. Install Python 3.6 on Ubuntu 16.04, from source
  6. pytorch 中的数据类型,tensor的创建
  7. 致程序员:学会这套操,下班比人早!
  8. 透视表学习(四)想要做好数据分析必知必会排序操作
  9. 总结输入阻抗和输出阻抗
  10. Chromium浏览器的一些使用总结
  11. 百度笔记聚合是什么?
  12. 11. 文件操作与模块
  13. 简谈:如何学习FPGA
  14. ps4饥荒联机版服务器未响应,《饥荒联机版》国服的正确打开方式,你get到吗?...
  15. 好尚不可为,其况恶乎(转)
  16. 程序员求职之道(《程序员面试笔试宝典》)之面试笔试技巧?
  17. 各大厂商对Google收购摩托罗拉的表态
  18. 抖音壁纸小程序怎么做?手把手教你开通流量主拥有自己的壁纸小程序
  19. 如何实现一个安卓群控系统
  20. 当前对计算机专业人才的要求,高校计算机专业人才培养方法论文

热门文章

  1. Liunx环境下oracle 自动跟随系统启动
  2. 云服务器可以经常断电吗,云服务器可以关电脑吗?你知道云服务器重启的利弊吗?...
  3. 高德地图-删除多个指定点标记
  4. autoCAD制图技巧:[弹簧
  5. PyQt(Python+Qt)学习随笔:QTextEdit的setText、setHtml、setPlainText之间的区别
  6. 520女生最想要什么礼物,女生想要的礼物清单列表
  7. 电脑运行python后很卡_造成python程序员运行缓慢的原因有哪些
  8. 【物理应用】matlab计算油气井井底压力
  9. 15.汉字的繁简转换 C#
  10. 计算机编程术语. dsp,TI DSP——专业名词解释