PHP 无限级分类(递归)
网上有很多,这是我自己做测试用的 $arr = array(
array('id'=>1,'name'=>'电脑','pid'=>0),
array('id'=>2,'name'=>'手机','pid'=>0),
array('id'=>3,'name'=>'笔记本','pid'=>1),
array('id'=>4,'name'=>'台式机','pid'=>1),
array('id'=>5,'name'=>'智能机','pid'=>2),
array('id'=>6,'name'=>'功能机','pid'=>2),
array('id'=>7,'name'=>'超级本','pid'=>3),
array('id'=>8,'name'=>'游戏本','pid'=>3),
);
/**
* @param $arr 数组
* @param $id id
* @param $level 层级
* @return array
*/
function demo($arr,$id,$level)
{
$list =array();
foreach ($arr as $k=>$v){
if ($v['pid'] == $id){
$v['level']=$level;
$v['son'] = demo($arr,$v['id'],$level+1);
$list[] = $v;
}
}
return $list;
}
echo "<pre>";
print_r(demo($arr,0,0)); 输出结果:
Array
(
[0] => Array
(
[id] => 1
[name] => 电脑
[pid] => 0
[level] => 0
[son] => Array
(
[0] => Array
(
[id] => 3
[name] => 笔记本
[pid] => 1
[level] => 1
[son] => Array
(
[0] => Array
(
[id] => 7
[name] => 超级本
[pid] => 3
[level] => 2
[son] => Array
(
) ) [1] => Array
(
[id] => 8
[name] => 游戏本
[pid] => 3
[level] => 2
[son] => Array
(
) ) ) ) [1] => Array
(
[id] => 4
[name] => 台式机
[pid] => 1
[level] => 1
[son] => Array
(
) ) ) ) [1] => Array
(
[id] => 2
[name] => 手机
[pid] => 0
[level] => 0
[son] => Array
(
[0] => Array
(
[id] => 5
[name] => 智能机
[pid] => 2
[level] => 1
[son] => Array
(
) ) [1] => Array
(
[id] => 6
[name] => 功能机
[pid] => 2
[level] => 1
[son] => Array
(
) ) ) ) )
PHP 无限级分类(递归)的更多相关文章
- C#无限级分类递归显示示例
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="RoleDemo20150305 ...
- PHP无限级分类-递归(不推荐)
[http://www.helloweba.com/view-blog-204.html] 在一些复杂的系统中,要求对信息栏目进行无限级的分类,以增强系统的灵活性.那么PHP是如何实现无限级分类的呢? ...
- ThinkPHP无限级分类(递归)
代码演示 没什么可说的直接看代码 <?php namespace app\controller; class Category { //模拟假数据 protected static functi ...
- 使用Python3.7+Django2.0.4配合vue.js2.0的组件递归来实现无限级分类(递归层级结构)
原文转载自「刘悦的技术博客」https://v3u.cn/a_id_133 所谓的无限极分类是啥?其实简单点说就是一个人类可以繁衍出多个后代,然后一个后代又可以分另外多个后代这样无限繁衍下去(可以想象 ...
- PHP无限级分类的实现(不使用递归)
无限级分类在开发中经常使用,例如:部门结构.文章分类.无限级分类的难点在于“输出”和“查询”,例如 将文章分类输出为<ul>列表形式: 查找分类A下面所有分类包含的文章. 1.实现原理 在 ...
- (实用篇)PHP递归实现无限级分类
在一些复杂的系统中,要求对信息栏目进行无限级的分类,以增强系统的灵活性.那么PHP是如何实现无限级分类的呢?我们在本文中使用递归算法并结合mysql数据表实现无限级分类. 在一些复杂的系统中,要求对信 ...
- PHP+MySQL无限级分类(非递归)
要实现无限级分类,递归一般是第一个也是最容易想到的,但是递归一般被认为占用资源的方法,所以很多系统是不考虑使用递归的 本文还是通过数据库的设计,用一句sql语句实现 数据库字段大概如下: 字段 说明 ...
- php非递归无限级分类.
项目需要.递归无限级分类效率实在太低.理了半天思路写的. 分类越多效率越高. /** * 单次循环返回无限极分类嵌套 * @param array $data 操作的数组 * @param strin ...
- 转:php+mysql菜单无限级分类(非递归)
php+mysql无限级分类(非递归) 参考:http://www.chhua.com/web-note3244
随机推荐
- Ubuntu14.04下搜狗输入法的安装及配置
在搜狗官网上下载相应的版本32/64 搜狗网址:http://pinyin.sogou.com/linux/?r=pinyin 在文件夹中找到下载的搜狗输入法文件(默认位置是Downloads),双击 ...
- Linux云自动化运维第五课
Linux云自动化运维第五课 一.进程定义 进程就是cpu未完成的工作 二.ps命令 ps a ###关于当前环境的所有进程 x ###与当前环境无关的所有进程 f ###显示进程从属关系 e ### ...
- 关于bootstrap原理及优缺点
网格系统的实现原理,是通过定义容器大小,平分12份(也有平分成24份或32份,但12份是最常见的),再调整内外边距,最后结合媒体查询,就制作出了强大的响应式网格系统.Bootstrap框架中的网格系统 ...
- 【转】如何实现Flex页面跳转
其实对于这个题目是不恰当的,因为flex中是没有页面这个概念的,页面在flex里面其实就是一个个的Canvas,vbox,hbox等等之类的东西,看到的不同页面的切换,就是这些元素一层层的堆积,或者替 ...
- 手机自动化测试:Appium代码之Logger
手机自动化测试:Appium代码之Logger poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.poptest推出手机自动化测 ...
- poj 2369 Permutations (置换入门)
题意:给你一堆无序的数列p,求k,使得p^k=p 思路:利用置换的性质,先找出所有的循环,然后循环中元素的个数的lcm就是答案 代码: #include <cstdio> #include ...
- JAVA 发送邮件代码---发送文本内容: 内容使用\n 进行换行
依赖包:mail.jar JAR链接地址: http://pan.baidu.com/s/1o8LNl0Y 密码: ja52 package mail; import java.util.Proper ...
- sublimeText3插件安装
1,官方下载sublimeText 3(百度搜索) 2,安装成功后按Ctrl+`调出console 3,然后输入 import urllib.request,os; pf = 'Package Con ...
- html结合js实现简单的树状目录
最近在学jsp,期末了要做项目,需要用到树状目录,百度了很多,都没有找到想要的答案,最后自己折腾了半天,才搞定. 下面我就来分享一下怎么实现一个简单的树状目录: 1. 下载jquery-treevie ...
- js 形参和实参---2017-04-11
一.定义 1.实参(argument): 全称为"实际参数"是在调用时传递给函数的参数. 实参可以是常量.变量.表达式.函数等, 无论实参是何种类型的量,在进行函数调用时, ...