递归无限分类笔记

最近项目都上线了每天巩固一下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(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-- ----------------------------
-- Records of category
-- ----------------------------
INSERT INTO `category` VALUES (‘1‘, ‘手机‘, null, ‘0‘);
INSERT INTO `category` VALUES (‘2‘, ‘家电‘, null, ‘0‘);
INSERT INTO `category` VALUES (‘3‘, ‘家具‘, null, ‘0‘);
INSERT INTO `category` VALUES (‘4‘, ‘诺基亚‘, null, ‘1‘);
INSERT INTO `category` VALUES (‘5‘, ‘苹果‘, null, ‘1‘);
INSERT INTO `category` VALUES (‘6‘, ‘电冰箱‘, null, ‘2‘);
INSERT INTO `category` VALUES (‘7‘, ‘电视机‘, null, ‘2‘);
INSERT INTO `category` VALUES (‘8‘, ‘柜子‘, null, ‘3‘);
INSERT INTO `category` VALUES (‘9‘, ‘桌子‘, null, ‘3‘);
INSERT INTO `category` VALUES (‘10‘, ‘诺基亚3310‘, null, ‘4‘);
INSERT INTO `category` VALUES (‘11‘, ‘苹果8s‘, null, ‘5‘);
INSERT INTO `category` VALUES (‘12‘, ‘海尔电冰箱‘, null, ‘6‘);
INSERT INTO `category` VALUES (‘13‘, ‘长虹电视机‘, null, ‘7‘);
INSERT INTO `category` VALUES (‘14‘, ‘红木柜子‘, null, ‘8‘);
INSERT INTO `category` VALUES (‘15‘, ‘红木桌子‘, null, ‘9‘);

php代码部分

<?php
/**
 * Created by PhpStorm.
 * User: a-4
 * Date: 2017/8/3
 * Time: 14:12
 */
mysql_connect(‘localhost‘,‘root‘,‘‘);
mysql_select_db(‘ld‘);
mysql_query(‘set names utf8‘);
$sql = "select * from category order by sort_order";
$re = mysql_query($sql);
$array = array();
while($row= mysql_fetch_assoc($re)){
    $array[]=$row;
}
//创建树形结构
function createTree($list,$parendid=0,$deep=0){
    static $tree =array();
    foreach($list as $k=>$rows){
     if($rows[‘parendid‘] == $parendid){
         //深度字段 次字段来作为分级的标准
         $rows[‘deep‘] =$deep;
         $tree[] = $rows;
         createTree($list,$rows[‘id‘],$deep+1);
     }
    }
  return $tree;
}
echo ‘<pre>‘;
$tmp= createTree($array);
foreach ($tmp as $rows){
    echo str_repeat(‘&nbsp;‘,$rows[‘deep‘]*2),$rows[‘name‘],‘<br>‘;
}
//print_r ($tmp);
?>
时间: 2024-08-26 05:56:01

递归无限分类笔记的相关文章

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 $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[

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

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

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

php递归无限极分类

递归无限级分类有几种形式,我这里只举例比较常用的三种: 第一种:返回有排序的数组: <?php $data = array( 1 => array( 'id' => 1, 'pid' => 0, 'user_name' => 'one', ), 2 => array( 'id' => 2, 'pid' => 1, 'user_name' => 'two', ), 3 => array( 'id' => 3, 'pid' => 1, '

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

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

php递归无限极分类实例

无限级分类原理简介 无限分类看似"高大上",实际上原理是非常简单的 .无限分类不仅仅需要代码的巧妙性,也要依托数据库设计的合理性.要满足无限级分类,数据库需要有两个必须的字段,id,pid.id用来标识自身,而 pid则是用来表明父级id.也就是说,每个分类记录不仅描述了自身,还描述了与其关心最为紧密的另一个id.看似复杂的事情被这样一个小技巧解决了. 闲话不多说,该展现本文的实例了. 作为一个狂热海贼迷,这篇的实例我就以<海贼王>人物组织做案例. 数据库准备: 建表one

无限分类树操作

获取相应分类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