<?php

/**
* 递归方法实现无限级别分类
* @param array $list 要生成树形列表的数组[该数组中必须要有主键id 和 父级pid]
* @param int $pid=0 父级id
* @param int $level=0 缩进次数[用于指定分类名称要缩进的数量]
*/ function getTree($list,$pid=0,$level=0 ) {
// static 表示声明一个静态变量, 静态变量在函数中会一直保存它的值
static $tree = array();
foreach($list as $row) {
if($row['pid']==$pid) {
// 这个level是原来数组没有的,用于表示缩进的次数
$row['level'] = $level;
$tree[] = $row;
// 递归操作,重新把当前id传入函数中,获取当前id对应的子分类
getTree($list, $row['id'], $level + 1);
}
}
return $tree;
}

PHP_递归实现无限级分类的更多相关文章

  1. PHP不使用递归的无限级分类

    不用递归实现无限级分类,简单测试了下性能比递归稍好一点点点,但写得太复杂了,还是递归简单方便点 代码: <?php $list = array( array('id'=>1, 'pid'= ...

  2. thinkphp框架中使用递归实现无限级分类

    无限级分类在我们开发中显得举足轻重,会经常被人问到,而一般会用递归的方法来实现,但是递归又会难倒一批人.今天博主分享的这个稍微有点基础的phper都能学会,希望大家能喜欢. 一.先建立对应的数据库和表 ...

  3. (实用篇)PHP递归实现无限级分类

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

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

    无限级分类是开发中常见的情况,因此本文对常见的无限极分类算法进行总结归纳. 1.循环迭代实现 $arr = [ 1=>['id'=>1,'name'=>'父1','father'=& ...

  5. PHP递归实现无限级分类

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

  6. php递归实现无限级分类树

      作者: PHP中文网|标签:PHP 递归 无限级树|2017-5-18 18:09   无限级树状图可以说是无限级栏目的一个显著特征,我们接下来就来看看两种不同的写法. 一.数据库设计 1 2 3 ...

  7. PHP 递归读取无限级分类

    /** * [获取第一级分类] * 20170829 * * @return array */ public function getCateList(){ $this->catelog = [ ...

  8. PHP递归重新排序无限级分类数组

    public static function Menus($id,$spac=0){ /* $data = array( 1 => array('id' => 1,'name' => ...

  9. PHP无限级分类的实现(不使用递归)

    无限级分类在开发中经常使用,例如:部门结构.文章分类.无限级分类的难点在于“输出”和“查询”,例如 将文章分类输出为<ul>列表形式: 查找分类A下面所有分类包含的文章. 1.实现原理 在 ...

  10. PHP+MySQL无限级分类(非递归)

    要实现无限级分类,递归一般是第一个也是最容易想到的,但是递归一般被认为占用资源的方法,所以很多系统是不考虑使用递归的 本文还是通过数据库的设计,用一句sql语句实现 数据库字段大概如下: 字段 说明 ...

随机推荐

  1. Java语言发展史-计算机进制转换

    Java语言发展史 java的诞生 在1991年时候,James Gosling在Sun公司的工程师小组想要设计这样一种主要用于像电视盒这样的消费类电子产品的小型计算机语言. 这些电子产品有一个共同的 ...

  2. 单细胞转录组实战01: CellRanger7定量

    安装CellRanger cd ~/APP wget -O cellranger-7.1.0.tar.xz "https://cf.10xgenomics.com/releases/cell ...

  3. LeetCode_单周赛_328

    6291. 数组元素和与数字和的绝对差 代码 模拟即可 class Solution { public int differenceOfSum(int[] nums) { int ans = 0; i ...

  4. docker-01基本介绍

    1.docker出现的背景原因 一款产品从开发到上线,从操作系统,到运行环境,再到应用配置.作为开发+运维之间的协作我们需要关心很多东西,这也是很多互联网公司都不得不面对的问题,特别是各种版本的迭代后 ...

  5. java基础(完整版)

    java javaSE 注释: block块级 line 行 标识符和关键字 组成部分.变量名.类名.方法名--------标识符 $\数字._\字母 数据类型 强类型语言---安全性高--速度会慢 ...

  6. TNF拮抗剂的结构、功能与结核感染_Wallis2008

    中信国健临床通讯 2009年第2期 TNF拮抗剂的结构.功能与结核感染 Robert S. Wallis. THE LANCET Infectious Diseases. 2008; 8:601–61 ...

  7. Windows必装软件,一个比一个好用

    前言 每次重装完系统,或者新换了电脑之后,你第一时间会安装哪些软件呢?那这次小卷就为大家带来18款电脑必备软件,它们共同的特点是绿色小巧无广告,而且在我看来,每一个同类型软件中最出类拔萃的,我就这么说 ...

  8. Angular 利用路由快照实现tab

    1.定义路由快照 新建文件SimpleReuseStrategy.ts import { RouteReuseStrategy, DefaultUrlSerializer, ActivatedRout ...

  9. ubuntu 启动脚本变化

    ubuntu-16.10 开始不再使用initd管理系统,改用systemd- 快速看了 systemd 的使用方法,发现改动有点大, 包括用 systemctl 命令来替换了 service 和 c ...

  10. rn用Modal实现Drawer

    PS:本文仅说明Modal可以用来做Drawer,并不介绍Modal的用法. 今天在开发的时候,想要使用Drawer. RN原生不自带Drawer,react-native-drawer又有bug(没 ...