您当前的位置: 首页 >  分类

暂无认证

  • 0浏览

    0关注

    92582博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

tp6无限极分类的查询(递归)

发布时间:2022-05-23 18:03:44 ,浏览量:0

$cats = Db::name('cat')->select()->toArray(); $cats = tree($cats); 

在这里插入图片描述

function tree($data,$pid=0,$level=0){ static $arr = []; foreach($data as $k=>$v){ if($v['pid']==$pid){ $v['cat_name'] = str_repeat('|----',$level).$v['cat_name']; $arr[] = $v; unset($data[$k]); tree($data,$v['id'],$level+1); } } return $arr; } 

递归就是先查找顶级分类,然后通过递归查找其顶级分类下的子类。 如果有第二个顶级分类的话,他会先unset( d a t a [ data[ data[k])先删除已经遍历过的,就能得到第二个顶级分类

$v['cat_name'] = str_repeat('|----',$level).$v['cat_name']; 

是先判断是顶级分类就不用|----,不是的话,下一级分类就开始加|----了,在下一级的话,就|----|----

if($v['pid']==$pid){ 

的意思是看$v[‘pid’]是不是等于0.代表顶级分类啊

tree($data,$v['id'],$level+1); 

查找顶级分类其下的子类(递归)$level+1,代表顶级分类的下一级

static $arr = []; 

为什么静态,因为不会覆盖嘛

$arr[] = $v; 

找到了就放到数组里面。比较方便一点。比较一个数组进来进行递归操作比较麻烦

-- phpMyAdmin SQL Dump -- version 4.8.5 -- https://www.phpmyadmin.net/ -- -- 主机: localhost -- 生成日期: 2022-05-23 18:02:43 -- 服务器版本: 5.7.26 -- PHP 版本: 7.3.4 SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; SET AUTOCOMMIT = 0; START TRANSACTION; SET time_zone = "+00:00"; /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8mb4 */; -- -- 数据库: `kkk` -- -- -------------------------------------------------------- -- -- 表的结构 `cat` -- CREATE TABLE `cat` ( `id` int(10) UNSIGNED NOT NULL, `pid` int(10) UNSIGNED NOT NULL, `cat_name` varchar(50) COLLATE utf8_unicode_ci NOT NULL, `cat_img` varchar(100) COLLATE utf8_unicode_ci NOT NULL, `is_show` tinyint(4) NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; -- -- 转存表中的数据 `cat` -- INSERT INTO `cat` (`id`, `pid`, `cat_name`, `cat_img`, `is_show`) VALUES (1, 0, '手机', '/storage/category/bc\\91231321a92a7a6a6db99fa7db8f37.png', 1), (7, 0, '厨具', '/storage/category/01\\c7232eb931fa3dd40f8b4946bd27fa.jpg', 1), (8, 7, '电饭锅', '/storage/category/2b\\edd18255c4efcfc4a9982ce33671be.jpg', 1), (9, 0, '服装', '/storage/category/f6\\655e2bed6b7bea027fb69a3c11a27c.jpg', 1), (10, 9, '女装', '/storage/category/84\\f9e13fa3a6093990bf3de4e2da74a0.jpg', 1), (11, 1, '华为', '/storage/category/b4\\a403d9874ed426bd5210a2f42c33f0.jpg', 1); -- -- 转储表的索引 -- -- -- 表的索引 `cat` -- ALTER TABLE `cat` ADD PRIMARY KEY (`id`); -- -- 在导出的表使用AUTO_INCREMENT -- -- -- 使用表AUTO_INCREMENT `cat` -- ALTER TABLE `cat` MODIFY `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=12; COMMIT; /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; 
关注
打赏
1653961664
查看更多评论
立即登录/注册

微信扫码登录

0.3505s