无限分类 php 递归

//事例数组

public function index(){
$data =array(
array(‘id‘ =>‘1‘,‘name‘ =>‘衣服‘, ‘pid‘=>0),
array(‘id‘=>‘2‘, ‘name‘ =>‘上衣‘, ‘pid‘=>1),
array(‘id‘=>‘3‘,‘name‘ =>‘裤子‘, ‘pid‘=>1),
array(‘id‘=>‘4‘, ‘name‘ =>‘鞋子‘, ‘pid‘=>0),
array(‘id‘ =>‘5‘,‘name‘ =>‘男鞋‘, ‘pid‘=>4),
array(‘id‘=>‘6‘, ‘name‘ =>‘女鞋‘, ‘pid‘=>4),
array(‘id‘ =>‘7‘,‘name‘ =>‘皮鞋‘, ‘pid‘=>5),
array(‘id‘=>‘8‘, ‘name‘ =>‘高跟鞋‘, ‘pid‘=>6),
);
$res = $this->treetest($data, 0);
dump($res);
}

//递归函数

public function treetest($data,$id=0){
$newarray =array();
$array =array();
if(is_array($data)){
foreach ($data as $val){
if($val[‘pid‘] == $id){
$array =$this->treetest($data, $val[‘id‘]);
$array && $val[‘son‘] =$array;
$newarray[]=$val;

}
}
return $newarray;
}

时间: 2024-10-05 12:19:33

无限分类 php 递归的相关文章

简单的无限分类中递归子栏目

<?php /* * 找子栏目 */ $area=array( array('id'=>1,'name'=>'中国','parent'=>0), array('id'=>2,'name'=>'广东','parent'=>1), array('id'=>3,'name'=>'深圳','parent'=>2), array('id'=>4,'name'=>'湖南','parent'=>1), array('id'=>5,'na

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

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

递归无限分类笔记

最近项目都上线了每天巩固一下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(

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

今日学习的是无限循环,这与递归有关.其实我自己还不是完全熟悉和上手,还需要琢磨琢磨. 初步学习递归,算是无限分类的一个小练习. 表: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

无限极分类中递归查找一个树结构

问题:设计公司的员工表,员工有不同级别,要求可通过一个员工查到其下属的所有员工,也可查到其所属的上级. 解决:递归实现无限分类思想,每一个员工存入其所属的上级的id作为自己的pid,另外存入path,path包含自身id,方便显示路径. 递归的注意点: 1.一定有一个判断条件,否则递归就死循环了 2.每次的递归结果要保存起来,变量自增的实现三种方式: function(&$bar):通过引用地址 global :通过设置为全局变量 static :设置为静态变量 header( "Con

无限分类三:递归

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

无限分类树操作

获取相应分类id的分类树: public static function getCategoryTree($id){ //$model=M('category'); if($id>0){ $obj=self::selectTable('category',array('id'=>$id),true);//$model->where(array('id'=>$id))->find(); if(!is_null($obj)){ $childList=self::selectTab

深度实现session【包括session入库、session机制和session和cookie的使用方法,完善会话机制(在分布式机器中也能使用)】、无限分类的实现

1.session的注意点:@session_start();//这个配置需要注意,session开启中会有影响,所以使用错误抑制符进行限制[并且使用php.ini对session进行自动开启] session_start()前的输出问题:[session信息本身会增加到http头信息,也就是http主体不能在头前]对php.ini中的输出缓存进行配置,out_buffer的配置[注意:开启之后能够保证输出内容在脚本中缓存] [注意](1)脚本中session变量的键只能是字符串类型的[$_SE

PHP无限分类树算法相关

一.找儿子 1.引用算法找儿子 /**  * 创建子节点树形数组  * 参数  * $ar 数组,邻接列表方式组织的数据  * $id 数组中作为主键的下标或关联键名  * $pid 数组中作为父键的下标或关联键名  * 返回 多维数组  **/ function find_child($ar, $id='id', $pid='pid') {     foreach($ar as $v) $t[$v[$id]] = $v;     foreach ($t as $k => $item){