您的位置 >>> 星想互联 >>> 编程技术 >>> PHP基础
递归算法实现网站栏目分类
点击数:1852  发布时间2017-09-29 13:47:53

首先是创建数据表结构和数据表:

-- ----------------------------
--  Table structure for `lm`
-- ----------------------------
DROPs TABLE IF EXISTS `lm`;
CREATEs TABLE `lm` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(50) DEFAULT NULL,
`pid` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=28 DEFAULT CHARSET=gbk;


-- ----------------------------
--  Records
-- ----------------------------

INSERTs INTO `lm` VALUES ('1','计算机应用','0'), ('2','物联网','0'), ('3','软件技术','0'), ('4','14计算机应用','1'), ('5','15计算机应用','1'), ('6','16计算机应用','1'), ('7','14物联网','2'), ('8','15物联网','2'), ('9','16物联网','2'), ('10','14软件技术','3'), ('11','15软件技术','3'), ('12','16软件技术','3'), ('13','14计算机应用1班','4'), ('14','14计算机应用2班','4'), ('15','14计算机应用3班','4'), ('16','15计算机应用2班','5'), ('17','15计算机应用3班','5'), ('18','16计算机应用1班','6'), ('19','14软件技术1班','10'), ('20','14软件技术2班','10'), ('21','15软件技术1班','11'), ('22','16软件技术1班','12'), ('23','15物联网1班','8'), ('24','16物联网1班','9'), ('25','16物联网2班','9'), ('26','16物联网3班','9'), ('27','15计算机应用1班',NULL);


然后编写递归算法


header("Content-type: text/html; charset=gb2312");
$mypdo=new pdo("mysql:host=localhost;dbname=news;charset=gbk","root","");
$mypdo->query("set names gb2312");

function getlm($id=0){
global $mypdo;
$sql="select id,title from `lm` where pid=$id";
$stmt=$mypdo->query($sql);

if($stmt){
echo "<br>";
while($rs=$stmt->fetch(PDO::FETCH_ASSOC)){
echo $rs['title']."<br>";
$id=$rs['id'];
getlm($id) ;
}
echo "<br>";
}
}

getlm();
?>

程序运行结果如下:
    计算机应用
      14计算机应用
        14计算机应用1班
        14计算机应用2班
        14计算机应用3班
      15计算机应用
        15计算机应用2班
        15计算机应用3班
      16计算机应用
        16计算机应用1班
    物联网
      14物联网
      15物联网
        15物联网1班
      16物联网
        16物联网1班
        16物联网2班
        16物联网3班
    软件技术
      14软件技术
        14软件技术1班
        14软件技术2班
      15软件技术
        15软件技术1班
      16软件技术
        16软件技术1班
来源:咸宁网站建设