PHP实现无限级分类
前段时间做一个小项目的时候用到了无限级分类,当时也忘的差不多了,于是就去网上查资料学,下面是我的学习笔记
数据格式:
array (size=5)
1 =>
array (size=6)
'id' => string '1' (length=1)
'pid' => string '0' (length=1)
'name' => string '青年之声1' (length=13)
'description' => string '' (length=0)
'create_time' => string '2017-04-02 15:38:06' (length=19)
'del' => string '0' (length=1)
2 =>
array (size=6)
'id' => string '2' (length=1)
'pid' => string '1' (length=1)
'name' => string '青年之声2' (length=13)
'description' => string '' (length=0)
'create_time' => string '2017-04-02 15:38:06' (length=19)
'del' => string '0' (length=1)
3 =>
array (size=6)
'id' => string '3' (length=1)
'pid' => string '2' (length=1)
'name' => string '青年之声3' (length=13)
'description' => string '' (length=0)
'create_time' => string '2017-04-02 15:38:06' (length=19)
'del' => string '0' (length=1)
4 =>
array (size=6)
'id' => string '4' (length=1)
'pid' => string '3' (length=1)
'name' => string '青年之声4' (length=13)
'description' => string '' (length=0)
'create_time' => string '2017-04-02 15:38:06' (length=19)
'del' => string '0' (length=1)
5 =>
array (size=6)
'id' => string '5' (length=1)
'pid' => string '4' (length=1)
'name' => string '青年之声5' (length=13)
'description' => string '' (length=0)
'create_time' => string '2017-04-02 15:38:06' (length=19)
'del' => string '0' (length=1)
非递归算法
$tree = array();
foreach ($items as $item) {
if (isset($items[$item['pid']])) {
$items[$item['pid']]['childs'][] = &$items[$item['id']];
} else {
$tree[] = &$items[$item['id']];
}
}
递归算法
function getChild($id) {
$tree = [];
$childs = Columns::find()->where(['pid' => $id, 'del' => 0])->asArray()->all();
if ($childs) {
foreach ($childs as $child) {
$childTree = getChild($child['id']);
if ($childTree) {
$child['children'] = $childTree;
}
$tree[] = $child;
}
}
return $tree;
}
最终结果

PHP实现无限级分类的更多相关文章
- PHP无限级分类的实现(不使用递归)
无限级分类在开发中经常使用,例如:部门结构.文章分类.无限级分类的难点在于“输出”和“查询”,例如 将文章分类输出为<ul>列表形式: 查找分类A下面所有分类包含的文章. 1.实现原理 在 ...
- 一道无限级分类题的 PHP 实现
今天有网友出了道题: 给出如下的父子结构(你可以用你所用语言的类似结构来描述,第一列是父,第二列是子),将其梳理成类似如图的层次父子结构. origin = [('A112', 'A1122'), ( ...
- (实用篇)PHP递归实现无限级分类
在一些复杂的系统中,要求对信息栏目进行无限级的分类,以增强系统的灵活性.那么PHP是如何实现无限级分类的呢?我们在本文中使用递归算法并结合mysql数据表实现无限级分类. 在一些复杂的系统中,要求对信 ...
- php利用递归函数实现无限级分类
相信很多学php的很多小伙伴都会尝试做一个网上商城作为提升自己技术的一种途径.各种对商品分类,商品名之类的操作应该是得心应手,那么就可以尝试下无限级分类列表的制作了. 什么是无限级分类? 无限级分类是 ...
- PHP+MySQL无限级分类(非递归)
要实现无限级分类,递归一般是第一个也是最容易想到的,但是递归一般被认为占用资源的方法,所以很多系统是不考虑使用递归的 本文还是通过数据库的设计,用一句sql语句实现 数据库字段大概如下: 字段 说明 ...
- PHP无限级分类-递归(不推荐)
[http://www.helloweba.com/view-blog-204.html] 在一些复杂的系统中,要求对信息栏目进行无限级的分类,以增强系统的灵活性.那么PHP是如何实现无限级分类的呢? ...
- PHP无限级分类生成树实例代码
分享一例php无限级分类生成树的代码,学习下php无限级分类的实现方法,有需要的朋友参考下. 一段非常精简的PHP无限极分类生成树方法,巧在引用. 例子,php实现无限级分类. 代码示例: ...
- php非递归无限级分类.
项目需要.递归无限级分类效率实在太低.理了半天思路写的. 分类越多效率越高. /** * 单次循环返回无限极分类嵌套 * @param array $data 操作的数组 * @param strin ...
- 转:php+mysql菜单无限级分类(非递归)
php+mysql无限级分类(非递归) 参考:http://www.chhua.com/web-note3244
- SQL 无限级分类语句
原文:SQL 无限级分类语句 原表数据为: 此处用到了with关键字,在程序中也可以用递归实现,但觉得还是没有一条sql方便 with tb (ID,Name,ParentID,Sort) as( s ...
随机推荐
- php object 对象系统
php object 对象系统 概述 本节内容仅谈论对象系统内容, 对于相关内容并不做更深一步的扩展, 相关扩展的内容会在后续补充 object 对象属于 zval 结构的一种形式 php 将所有执行 ...
- httpd: Could not reliably determine the server's fully qualified domain name
作者:Younger Liu, 本作品采用知识共享署名-非商业性使用-相同方式共享 3.0 未本地化版本许可协议进行许可. 问题描述: AH00558: httpd: Could not reliab ...
- PHP学习笔记-1
PHP基本语法 php脚本可以放在文档的任意位置: php脚本以<? php开始,以?>结束: php文件通常包括Html标签和一些php脚本代码: 举个栗子: <!DOCTYPE ...
- 走进javascript——类型
ECMAScript语言类型对应于使用ECMAScript语言的ECMAScript程序员直接操作的值.ECMAScript语言类型有以下几种Undefined,Null,Boolean,String ...
- DDD理论学习系列(1)-- 通用语言
1.引言 在开始之前,我想我们有必要先了解以下DDD的主要参与者.因为毕竟语言是人说的吗,就像我们面向对象编程一样,那通用语言面向的是? DDD的主要参与者:领域专家+开发人员 领域专家:精通业务的任 ...
- 使用CSS3中的input标签与lable标签组合实现banner图的切换
在做网页时,我们经常可以碰到banner图的切换.对于那些JS薄弱的同学来说,这就很尴尬了.今天,我来告诉大家如何使用CSS做出banner图切换的效果. 这里,用到了lable标签与input的组合 ...
- OA办公系统,一个沉淀企业文化的容器
资源是会枯竭的,唯有文化才会生生不息.一切工业产品都是人类智慧创造的.随着公司规模的扩大,企业中两大根本"人和规则"面临诸多挑战,OA办公系统是一个全员使用的办公软件产品,员工可通 ...
- 从点击到呈现 — 详解一次HTTP请求
一般来说,很多的参考资料上面都会说,http 是一个基于请求/响应的工作模式,然后画出一张浏览器和服务器的 b/s 结构图,再画上两个箭头,表示请求和响应,应该说这么解释是易懂的,一般也是够清楚的,但 ...
- 使用HTMLParser爬取标签内容
以此网站为例 import urllib.request from html.parser import HTMLParser from html.entities import name2codep ...
- MFC基础程序设计VS2015 最新02
视频教程地址观看:http://pan.baidu.com/s/1mhKQ6kK 对于每个函数的帮助资料都应该详细阅读:a)简要说明:能够快速了解函数的功能:b)参数:每一个参数的功能都应该了解它的含 ...