PHP_递归实现无限级分类

<?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;
}
时间: 2024-12-26 09:44:34

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

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

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

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

在一些复杂的系统中,要求对信息栏目进行无限级的分类,以增强系统的灵活性.那么PHP是如何实现无限级分类的呢?我们在本文中使用递归算法并结合mysql数据表实现无限级分类. 在一些复杂的系统中,要求对信息栏目进行无限级的分类,以增强系统的灵活性.那么PHP是如何实现无限级分类的呢?我们在本文中使用递归算法并结合mysql数据表实现无限级分类. 递归,简单的说就是一段程序代码的重复调用,当把代码写到一个自定义函数中,将参数等变量保存,函数中重复调用函数,直到达到某个条件才跳出,返回相应的数据. 首先

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

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

PHP递归实现无限级分类

在一些复杂的系统中,要求对信息栏目进行无限级的分类,以增强系统的灵活性.那么PHP是如何实现无限级分类的呢?我们在本文中使用递归算法并结合mysql数据表实现无限级分类. 在一些复杂的系统中,要求对信息栏目进行无限级的分类,以增强系统的灵活性.那么PHP是如何实现无限级分类的呢?我们在本文中使用递归算法并结合mysql数据表实现无限级分类. 递归,简单的说就是一段程序代码的重复调用,当把代码写到一个自定义函数中,将参数等变量保存,函数中重复调用函数,直到达到某个条件才跳出,返回相应的数据. My

php下利用递归实现无限级分类

<?php //分析 /* 福建省 福州市 龙岩市 广东省 广州市 佛山市 晋江市 江门市 江西省 南昌市 赣州市 宁都县 大余县 信封县 吉安市 cat_id pri parent_id 1 福建省 0 2 福州市 1 3 龙岩市 1 4 广东省 0 5 广州市 4 6 佛山市 4 7 晋江市 4 8 江门市 7 9 江西省 0 10 南昌市 9 11 赣州市 9 12 宁都县 11 13 大余县 11 14 信封县 11 15 吉安市 9 16 */ ?> <?php header(

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

public static function Menus($id,$spac=0){ /* $data = array( 1 => array('id' => 1,'name' => 'name1','pid' => 0), 2 => array('id' => 2,'name' => 'name2','pid' => 0), 3 => array('id' => 3,'name' => 'name3','pid' => 1), 4

mysql无限级分类实现基于汇报关系的信息管理权限

汇报关系和家族族谱的实现类似,采用树的数据结构进行定义,树采用递归进行定义.即要嘛是一个根节点,要嘛是由一个根节点和其子树组成.OA中的汇报关系也采用这种结构(与树稍有不同),除董事长外,其他人有且只有一个非其本人的直接主管,董事长的直接主管和越级主管是其本人.从以上的定义其实可以看出,汇报关系类似树,但又与树并不完全相同.除董事长外,其他汇报关系均是树形结构.树形结构采用递归定义,如采用递归查询是非常耗时的操作.比如以下需求: 1.主管可以看到所有直线下属的绩效信息: 针对以上需求,我们提出三

PHP无限级分类-递归(不推荐)

[http://www.helloweba.com/view-blog-204.html] 在一些复杂的系统中,要求对信息栏目进行无限级的分类,以增强系统的灵活性.那么PHP是如何实现无限级分类的呢?我们在本文中使用递归算法并结合mysql数据表实现无限级分类. 在一些复杂的系统中,要求对信息栏目进行无限级的分类,以增强系统的灵活性.那么PHP是如何实现无限级分类的呢?我们在本文中使用递归算法并结合mysql数据表实现无限级分类. 递归,简单的说就是一段程序代码的重复调用,当把代码写到一个自定义

php非递归无限级分类.

项目需要.递归无限级分类效率实在太低.理了半天思路写的. 分类越多效率越高. /** * 单次循环返回无限极分类嵌套 * @param array $data 操作的数组 * @param string $columnPri 唯一键名,如果是表则是表的主键 * @param string $columnPid 父ID键名 * @return array */ function region_tree($data, $columnPri, $columnPid) { define('__paren