php部分,一个用递归无限分类的方法

<?php

   $data[]=array(‘id‘=>1,‘parentid‘=>0,‘name‘=>‘中国‘);
   $data[]=array(‘id‘=>2,‘parentid‘=>0,‘name‘=>‘美国‘);
   $data[]=array(‘id‘=>3,‘parentid‘=>0,‘name‘=>‘韩国‘);
   $data[]=array(‘id‘=>4,‘parentid‘=>1,‘name‘=>‘北京‘);
   $data[]=array(‘id‘=>5,‘parentid‘=>1,‘name‘=>‘上海‘);
   $data[]=array(‘id‘=>6,‘parentid‘=>1,‘name‘=>‘广西‘);
   $data[]=array(‘id‘=>7,‘parentid‘=>6,‘name‘=>‘桂林‘);
   $data[]=array(‘id‘=>8,‘parentid‘=>6,‘name‘=>‘南宁‘);
   $data[]=array(‘id‘=>9,‘parentid‘=>6,‘name‘=>‘柳州‘);
   $data[]=array(‘id‘=>10,‘parentid‘=>2,‘name‘=>‘纽约‘);
   $data[]=array(‘id‘=>11,‘parentid‘=>2,‘name‘=>‘华盛顿‘);
   $data[]=array(‘id‘=>12,‘parentid‘=>3,‘name‘=>‘首尔‘); 

   $tree=build_tree($data,0);   

   print_r($tree); 

function findChild($arr,$id){
          $childs=array();   //定义一个数组
          foreach ($arr as $k => $v){    //把父级二维数组遍历
            if($v[‘parentid‘]== $id){     //判断子集的parentid的值是不是等于父级id的值
             $childs[]=$v;                //如果等于把这个子集交给变量数组$childs
            }
          }
          return $childs;               //返回符合条件的所有子集
} 

function build_tree($rows,$root_id){       //$root_id父级代号
          $childs=findChild($rows,$root_id);
          if(empty($childs)){
            return null;
          }
        foreach ($childs as $k => $v){      //遍历符合父级id值的数组
          $rescurTree=build_tree($rows,$v[‘id‘]);  //把子集再遍历,如果有子集就交给$rescurTree
          if( null != $rescurTree){
          $childs[$k][‘childs‘]=$rescurTree;  //把子集的子集交给$childs[$k][‘childs‘],[‘childs‘]是自定义的一个键值
} } return $childs; } ?>

时间: 2024-08-11 21:32:41

php部分,一个用递归无限分类的方法的相关文章

递归无限分类笔记

最近项目都上线了每天巩固一下php知识,下面是关于递归无限分类的比较供大家参考! 数据库一个表就可以了,增加一个parendid字段 也就是子级分类 ,排序大家也可以加一下字段. CREATE TABLE `category` (   `id` int(11) NOT NULL,   `name` varchar(255) CHARACTER SET utf8 DEFAULT NULL,   `sort_order` int(11) DEFAULT NULL,   `parendid` int(

PHP通过传引用的思想实现无限分类的方法

在我的Simpla中,用到了无限分类,使用了PHP的传引用思想实现无限分类的方法,可以完美展示类似这样的分类模式. 具体实现代码如下:如有错误或者更好的方法,希望可以相互交流. id   pid   name 1    0     四川 2    0     重庆 3    1     成都 4    1     绵阳 5    3     高新区 /**      * 数组变成无限级分类--传引用思想      * @param array $items      * @return arra

php递归无限分类原理

$items = array( array('id' => 1, 'pid' => 0, 'name' => '一级11' ), array('id' => 11, 'pid' => 0, 'name' => '一级12' ), array('id' => 2, 'pid' => 1, 'name' => '二级21' ), array('id' => 10, 'pid' => 11, 'name' => '二级22' ), arra

php中递归无限分类之-通过子栏目查找父栏目

<?php header("content-type:text/html;charset=utf8"); /*通过子栏目查找父栏目,范围小到范围大*/ $area = array( array('cat_id'=>1,'province'=>'福建省','parent_id'=>0), array('cat_id'=>2,'province'=>'龙岩市','parent_id'=>1), array('cat_id'=>3,'provi

基于bootstrap-treeview做的一个漂亮的无限分类树层级联动菜单

2017年12月11日09:59:15 因为工作需要把原来的bootstrap-treeview做了一些小改动,方便后台开发人员使用 最终效果,看起来还行,但是其实不是特别友好对用户来说,但是对开发者人员来说足够了 "after_html": "<span class=\"button_z\"><button type=\"button\" class=\"btn btn btn-info btn-xs\&q

PHP无限分类生成树方法,非递归,引用

//这个是核心方法 function generateTree($items){     $tree = array();     foreach($items as $item){         if(isset($items[$item['pid']])){             $items[$item['pid']]['son'][] =& $items[$item['id']];         }else{             $tree[] =& $items[$it

php不用递归完成无限分类,从表设计入手完整演示过程

无限分类是什么就不废话了,可以用递归实现,但是递归从数据库取东西用递归效率偏低,如果从表设计入手,就很容易做到网站导航的实现,下面是某论坛导航,如下图 网上无限分类大多不全面,今天我会从设计表开始, 首先我们先做视图界面, <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>白超华-博客园</title> &

初学递归,接触无限分类,小小的尝试

今日学习的是无限循环,这与递归有关.其实我自己还不是完全熟悉和上手,还需要琢磨琢磨. 初步学习递归,算是无限分类的一个小练习. 表:cate id int auto 自动递增 pid int 0为最大的分类 catename varchar 分类名称 读取数据库的cate表分类如下: //分类练习 include '../include.php'; function getList($pid=0,&$result=array(),$spac=0) { $spac = $spac + 4; $sq

无限分类三:递归

第一步,获取全部数据 第二部,写一个子分类的函数 第三,写一个递归循环函数 代码: /** * 查询所有数据 并且缓存 * */ public function authData(){ $res = $this->order('listorder asc')->select(); // 格式化 foreach($res as $k=>$v){ $result[$v['id']] = $v; } Cache::set('auth',$result); return $result; } /