好久没写博客啦。趁着时间稍微空闲点,整理下笔记。今天复习的知识点是无限分类的设计。
第一步 :设计数据库。
CREATE TABLE `fenlei` (
`id` int(100) NOT NULL AUTO_INCREMENT,
`name` varchar(50) NOT NULL DEFAULT '',
`pid` smallint(10) DEFAULT NULL,
`path` varchar(100) NOT NULL DEFAULT '',
PRIMARY KEY (`id`)
)
准备数据:
INSERT INTO `python3`.`fenlei`(`id`, `name`, `pid`, `path`) VALUES (1, '国际新闻', 0, '0');
INSERT INTO `python3`.`fenlei`(`id`, `name`, `pid`, `path`) VALUES (2, '国内新闻', 0, '0');
INSERT INTO `python3`.`fenlei`(`id`, `name`, `pid`, `path`) VALUES (3, '国际娱乐新闻', 1, '0-3');
INSERT INTO `python3`.`fenlei`(`id`, `name`, `pid`, `path`) VALUES (4, '国际体育新闻', 1, '0-4');
INSERT INTO `python3`.`fenlei`(`id`, `name`, `pid`, `path`) VALUES (5, '国内娱乐新闻', 2, '0-5');
INSERT INTO `python3`.`fenlei`(`id`, `name`, `pid`, `path`) VALUES (6, '国内体育新闻', 2, '0-6');
INSERT INTO `python3`.`fenlei`(`id`, `name`, `pid`, `path`) VALUES (7, '国际足球新闻', 4, '0-4-7');
INSERT INTO `python3`.`fenlei`(`id`, `name`, `pid`, `path`) VALUES (8, '国内篮球新闻', 6, '0-6-8');
第二步:
输出树型图。递归。
<?php /** * Created by PhpStorm. * User: Hurrian * Date: 2020/7/27 * Time: 16:50 */ $username = 'root'; $password = 'root'; $servername = '127.0.0.1'; try{ $connect = new PDO("mysql:host=$servername;dbname=python3", $username, $password); echo '连接成功!'; }catch (PDOException $e){ echo $e->getMessage(); die; } $sql = "select * from fenlei"; $query = $connect->query($sql); $result = $query->fetchAll(PDO::FETCH_ASSOC); $result = array_values($result); echo '<pre>'; print_r($result); /** * @param [array] $items [需要处理的数组] * @return [array] [多维数组] */ function generateTree($result,$pid = 0) { $tree = array(); foreach($result as $key=>$item){ if($item['pid'] == $pid){ unset($result[$key]); $child = generateTree($result, $item['id']); if(!empty($child)){ $item['children'] = $child; } $tree[] = $item; } } return $tree; } echo '<pre>'; print_r(generateTree($result));
得到结果: