测试数组

$array = [
['id' => , 'pid' => , 'name' => '这是主类'],
['id' => , 'pid' => , 'name' => '这是主类'],
['id' => , 'pid' => , 'name' => '父级为1子类'],
['id' => , 'pid' => , 'name' => '父级为2子类'],
['id' => , 'pid' => , 'name' => '父级为3子类'],
];

一、递归算法

function tree($array, $pid)
{
$tree = array();
foreach ($array as $key => $value) {
if ($value['pid'] == $pid) {
$value['child'] = tree($array, $value['id']);
if (!$value['child']) {
unset($value['child']);
}
$tree[] = $value;
}
}
return $tree;
} echo "<pre>" . print_r(tree($array, ), ) . "</pre>";

二、数组引用

function generateTree($rows, $id = 'id', $pid = 'pid')
{
$items = array();
foreach ($rows as $row) {
$items[$row[$id]] = $row;
}
foreach ($items as $item) {
$items[$item[$pid]]['son'][$item[$id]] = &$items[$item[$id]];
}
return isset($items[]['son']) ? $items[]['son'] : array();
} echo "<pre>" . print_r(generateTree($array), ) . "</pre>";

最新文章

  1. weiphp踩坑记录
  2. storyboard连线容易出现的问题
  3. cocos2d-x 图片性能测试
  4. 关于js的string的3个函数slice,substring,substr对比
  5. Java中替换HTML标签的方法代码
  6. mysql 事件调度器
  7. powerdesigner jdbc 连接 oracle
  8. Winedt10 添加自定义宏
  9. 好的android编码习惯
  10. 解决spark运行中failed to locate the winutils binary in the hadoop binary path的问题
  11. Spring 数据库连接(Connection)绑定线程(Thread)的实现
  12. J2EE进阶(七)利用SSH框架根据数据表建立model类
  13. SQL server 表信息查询
  14. iOS XIB使用中适配iPhoneX的安全区域、调用UiView动画
  15. [Swift]LeetCode234. 回文链表 | Palindrome Linked List
  16. FCC JS基础算法题(6):Truncate a string(截断字符串)
  17. 小朋友学C语言(4):单精度浮点数与双精度浮点数
  18. 【CF662A】Gambling Nim 线性基
  19. 自定义redis序列化工具
  20. ABAP-关于隐式与显式的DB Commit

热门文章

  1. c# 值传递
  2. RTC — 软件协作开发管理平台
  3. 【BZOJ2324】[ZJOI2011]营救皮卡丘 给定起点最小权K链可相交覆盖
  4. DataTable 删除数据后重新加载
  5. evpp http response_http_code_
  6. [转]对于BIO/NIO/AIO,你还只停留在烧开水的水平吗
  7. IntelliJ IDEA lombok插件的安装和使用
  8. 【xsy1103】随机数表(RanMat)矩阵快速幂
  9. Django中的日期和时间格式 DateTimeField
  10. GIL 信号量 event事件 线程queue