1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > php算法结构 PHP递归算法实现无限分类 - YangJunwei

php算法结构 PHP递归算法实现无限分类 - YangJunwei

时间:2020-03-13 22:49:48

相关推荐

php算法结构 PHP递归算法实现无限分类 - YangJunwei

php做项目会用到无限分类,也就是说父分类可以创建子分类,子分类可以再创建子分类,如此循环下去……

今天总结一下PHP递归算法实现无限分类的实操,好记性不如烂笔头。

递归,简单的说就是一段程序代码的重复调用,当把代码写到一个自定义函数中,将参数等变量保存,函数中重复调用函数,直到达到某个条件才跳出,返回相应的数据。

创建 Mysql 数据表

首先准备数据表 class,并插入几条示例分类信息。

字段注释:

id分类编号,自动增长;

pid所属父类id;

title分类名称。

class 数据表结构:

CREATE TABLEIFNOTEXISTS`class` (

`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '分类id',

`pid` INT(11) NOT NULL COMMENT '父类id',

`title` VARCHAR(25) COLLATE 'utf8_general_ci' NOT NULL COMMENT '分类名称',

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;

//插入父类:名称为 ‘新闻’,pid设为0,id自动增长可留空

INSERT INTO `class` (`id`, `pid`, `title`) VALUES (1, 0, '新闻');

//插入一级子类 ‘国内新闻’,其父类‘新闻’的id是1,所以它的pid设置为1

INSERT INTO `class` (`id`, `pid`, `title`) VALUES (2, 1, '国内新闻');

//插入二级子类 ‘图片’,其父类‘国内新闻’的id是2,所以它的pid设置为2

INSERT INTO `class` (`id`, `pid`, `title`) VALUES (3, 2, '图片');

…………

连接 MySQL

header("Content-type:text/html;charset=utf-8");

$db = new mysqli('localhost', 'root', '', 'data_name') ;

if(mysqli_connect_errno()){

echo '链接失败: '.mysqli_connect_error();

exit();

}

$db->query('set names utf8');

$result = $db->query('SELECT * FROM `class`');

PHP 无限分类

自定义函数,返回数组。

functionget_array($id=0){

$sql="selectid,titlefromclasswherepid=$id";

$result=mysql_query($sql);//查询子类

$arr=array();

if($result&&mysql_affected_rows()){//如果有子类

while($rows=mysql_fetch_assoc($result)){//循环记录集

$rows['list']=get_array($rows['id']);//调用函数,传入参数,继续查询下级

$arr[]=$rows;//组合数组

}

return$arr;

}

}

get_array() 返回数组,可以将数组转换成json格式传递给前端页面灵活运用,比如树形列表,下拉列表等。

$list=get_array(0);//调用函数

print_r($list);//输出数组

echojson_encode($list); //输出json格式数据

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。