无限分类设计

  好久没写博客啦。趁着时间稍微空闲点,整理下笔记。今天复习的知识点是无限分类的设计。

第一步 :设计数据库。

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));

  得到结果:

猜你喜欢

转载自www.cnblogs.com/wujf-myblog/p/13387299.html