PHP无限极分类实现

php之无限极分类 首先建立分类信息表: CREATE TABLE IF NOT EXISTS `category` ( `categoryId` smallint(5) unsigned NOT NULL AUTO_INCREMENT, `parentId` smallint(5) unsigned NOT NULL DEFAULT '0', `categoryName` varchar(50) NO 阅读详情

简单版的PHP生成无限极分类代码。其中包括了数据库设计、以及输出分类HTML代码。

SQL代码

CREATE TABLE `district` (
    `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
    `pid` int(10) unsigned NOT NULL,
    `name` varchar(32) NOT NULL DEFAULT '',
    PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8

# 添加一些测试数据
 INSERT INTO `district` (`id`, `pid`, `name`) VALUES
 (1, 0, '中国'),
 (2, 0, '美国'),
 (3, 0, '日本'),
 (4, 1, '北京'),
 (5, 1, '上海'),
 (6, 1, '广州'),
 (7, 2, '华盛顿'),
 (8, 2, '纽约'),
 (9, 3, '东京'),
 (10, 3, '广岛'),
 (11, 4, '朝阳区');

PHP代码

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

$mysql = new mysqli('localhost', 'root', 'root', 'test');
$mysql->query('SET NAMES UTF8');
$result = $mysql->query('SELECT * FROM `district`');

while ($row = $result->fetch_assoc()) {
    $district[$row['id']] = array('id' => $row['id'], 'pid' => $row['pid'], 'name' => $row['name']);
}

// $district结构如下所示:
$items = array(
    1 => array('id' => 1, 'pid' => 0, 'name' => '中国'),
    2 => array('id' => 2, 'pid' => 0, 'name' => '日本'),
    3 => array('id' => 3, 'pid' => 0, 'name' => '美国'),
    4 => array('id' => 1, 'pid' => 1, 'name' => '北京'),
    // .......
    // .......
    11 => array('id' => 11, 'pid' => '4', 'name' => '朝阳区')
);


/**
 * @方法一:将数据格式转换成树形结构数组
 * @param array $items 要进行转换的数组
 * return array $items 转换完成的数组
 */
function arrayToTree(Array $items) {
    foreach ($items as $item) {
        $items[$item['pid']]['son'][$item['id']] = &$items[$item['id']];
    }
    return isset($items[0]['son']) ? $items[0]['son'] : array();
}

/**
 * @方法二:将数据格式转换成树形结构数组
 * @param array $items 要进行转换的数组
 * return array $items 转换完成的数组
 */
function arrayToTree2(Array $items) {
    $tree = array();
    foreach ($items as $item)
        if (isset($items[$item['pid']])) {
            $items[$item['pid']]['son'][] = &$items[$item['id']];
        } else {
            $tree[] = &$items[$item['id']];
        }
    return $tree;
}

/**
 * 将树形结构数组输出
 * @param array $items 要输出的数组
 * @param number $deep 顶级父节点id
 */
function exportTree($items, $deep = 0){
    foreach ($items as $item) {
        printf("%s%s", str_repeat('——', $deep), $item['name']);
        if (!empty($item['son'])) {
            exportTree($item['son'], $deep + 1);
        }
    }
}

测试

// 将数组转换成树形结构格式
$district = arrayToTree2($district);
// 输出树形结构图
exportTree($district);

//  结果:

 中国
 ——北京
 ————朝阳区
 ——上海
 ——广州
 美国
 ——华盛顿
 ——纽约
 日本
 ——东京
 ——广岛
PHP实现无限极分类图文教程 一般来说实现无限极分类都是使用递归或者迭代的方式,小伙伴们看下本文的实现方式吧。 1,数据库设计: 2,代码: 复制代码 代码如下:/**  * @author koma  * @todo   PHP无限极分类  */ $cn = mysql_connect(‘localhost’, ‘root’, ”) or die(mysql_error()); mysql_select_db(‘t’, $cn) or die(mysql_error()); mysql_query(‘set names utf8’);  /**  * 从顶层逐级向下获取子类  * @param number $pid 立即下载

相关推荐

PHP实现无极限分类1

(2) 创建数据表“043_1”①创建一个名为“043_1”的数据表用来以递归的方式实现无限分类②表结构设计如图3所示:图3 数据表“043_1”表结构其中字段

学习使用php实现无限极评论和无限极转二级评论解决方案

学习使用php实现无限极评论和无限极转二级评论解决方案

徊忆羽菲 1047

实战详细讲解Qt插件plugin的编写与用法

qt插件的开发,可以说是动态库的开发,因为调用方式类似,多熟悉一下,利用Qt框架开发很简单的。在想想这种调用过程有的熟悉,比如公司买了一堆摄像头,公司要对摄像头进行二次开发,实现自己想要的功能,集成到一套设备里去,然后在卖给用户。此时厂商肯定会提供开发文档,并给你SDK包(软件开发工具包), 包里你会发现只有头文件和一堆库文件,没有源文件,因为实现的过程是产商公司保密的,给你看还得了。所以都封装成了库的形式给你调用,如静态库或者动态库。

qq_44667165的博客 1万+

php 评论无限极分类三级之后展示在第二级

话不多说直接放代码 不懂的直接评论 public function list() { $id = (int)$this->request->input('weekly_reports_id'); //查到数据 $list = $this->model->where('weekly_reports_id', $id)->get()->toArray(); $temp = [];

Kobe__Bryant__的博客 789

uniapp无感刷新token实现过程

可以看到已经触发了刷新token接口,并且重新请求上次失败的列表接口,无感刷新token逻辑已经正常,但为什么列表接口请求成功,还一直loading没关闭捏,就是因为后续代码未执行,await接口的返回没有成功resolve。路漫漫其修远兮,前端道路逐渐迷茫,时隔好久好久终于想起了我还有一个小博客,最近在一直在弄uniapp,属实有被恶心到,但也至少会用了,最近实现了一个比较通用的功能,就是无感刷新token,但在过程中发现一个问题就是。3、排查await的列表接口为何没有成功resolve。

weixin_40618068的博客 3594

ORB-SLAM3的Euroc数据集测试

(一)测试运行 不同模式测试过程(以MH_03为例) 1、pure mono 运行SLAM: cd ORB-SLAM3/Example #run slam ./Monocular/mono_euroc ../Vocabulary/ORBvoc.txt ./Monocular/EuRoC.yaml "$pathDatasetEuroc"/MH03 ./Monocular/EuRoC_TimeStamps/MH03.txt dataset-MH03_mono 利用ORB-SLAM3自带..

ljtx200888的博客 9145

PHP实现无限极分类之引用方法

本篇文章给大家带来的内容是关于php实现无限极分类的方法:引用方法 面试的时候被问到无限极分类的设计和实现,比较常见的做法是在建表的时候,增加一个PID字段用来区别自己所属的分类 数据在数据库中存储大概是这个样子,怎么实现无限极递归呢,有两种常用的做法,递归和引用算法 $array = array( array('id' => 1, 'pid' => 0, 'name' =&g...

Icebreaker 324

高校学籍管理系统(SQL Server数据库课程设计)

摘要: 高校的管理工作是一项复杂且系统化的工作。而随着当代社会积极响应国家“科教兴国”的战略。高校建设规模和招生人数每年均高不下,庞大的学生群体对高校的管理工作带来了巨大的挑战。而对学生的学籍管理工作更是高校管理工作的一个重要环节。 面对高校学生学籍信息如此庞大的数据群,如采用传统的管理模式,管理工作的效率不仅低下,而且数据错误的发生率相对较高,还会产生人力和物力上的巨大开支。面对这样的情况,开发一个高校学籍管理系统就显得尤为重要。 运用高校学籍管理系统可以大大提高高校管理工作效率、方便系统维护、减小开支、

qq_52030824的博客 7万+

php 实现无限极分类详解

php 实现无限极分类 原始数据 复制代码 $array = array( array('id' => 1, 'pid' => 0, 'n' => '河北省'), array('id' => 2, 'pid' => 0, 'n' => '北京市'), array('id' => 3, 'pid' => 1, 'n' =&g...

滴水石穿 631

反激电源RCD尖峰吸收电路的原理以及调试

反激电源RCD尖峰吸收电路的原理以及调试

mnmmnmn的博客 9250

1.30 Cubemx_STM32H743 SD_Card纳入文件管理系统

Cubemx_STM32H743 SD_Card纳入文件管理系统1、简介2、CubeMX配置 1、简介 和前面文章原理其实一样的。 1.29 Cubemx_STM32F429\H743 nandflash、spifalsh纳入文件管理系统 现在一并将SD卡、NandFlash、SPIFlash一并作为文件管理。 下面直接介绍SDcard,其他参考前面文章。 2、CubeMX配置 ...

oDuanYanGuHong的博客 1079

PHP实现无限极分类之递归方法

本篇文章给大家带来的内容是关于php实现无限极分类的方法:递归方法 面试的时候被问到无限极分类的设计和实现,比较常见的做法是在建表的时候,增加一个PID字段用来区别自己所属的分类 数据在数据库中存储大概是这个样子,怎么实现无限极递归呢,有两种常用的做法,递归和引用算法 递归算法` $array = array( array('id' => 1, 'pid' => 0, 'nam...

Icebreaker 986

Python 打包与发布陷阱:如何用 setuptools 和 PyInstaller 生成跨平台可执行文件?

使用。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1207

php 无限极分类树,PHP实现无限极分类树的方法

这篇文章主要介绍了PHP实现无限极分类树的方法,结合实例形式简单分析了无限极分类的原理与实现方法,涉及PHP数组遍历与判断相关操作技巧,需要的朋友可以参考下具体如下:现在的分类数据库设计基本都是:每一个分类有一个id主键字段,一个pid指向父类的id,这样便可实现无限级分类,取出的数据就是如下的格式:$arr = array(array("id" => 1 , "pid" => 0 ,...

weixin_35037351的博客 242

西门子S7-1200与FUNUC机器人MODBUS TCP通信

PLC与机器人通讯

Illusssion的博客 1万+

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

php实现无限极分类

php无限极分类  这里首先介绍一下,什么是无限极分类? 无限极分类简单点说就是一个类可以分成多个子类,然后一个子类又可以分另外多个子类这样无限分下去,就好象windows可以新建一个文件夹,然后在这个文件夹里又可以建一些个文件夹,在文件夹底下还可以建一些文件夹一样 那PHP又是如何实现它的无限分类的呢?如何把它的各个分类一一列出来呢? 首先,我们来假设有这样一个数组 $arr = ar...

叶落无痕的博客 1万+

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

手把手教你用php实现无限极分类功能

php无限极分类,php实现无限极分类 php轻松实现无限极分类功能- 手把手教你用php实现无限极分类功能 数据表设计 数据表数据 应用场景: 面包屑导航 分类(如:商品分类、课程分类、城市)文件夹 拼装无限极分类name

WXiangQian 3189

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

超级简单的php实现无限极分类的方法

php实现无限极分类的函数具体代码实现效果 具体代码 <?php $arr = array( 0=>array( 'cid'=>1, 'pid'=>0, 'name'=>'亚洲', ), 1=>array( 'cid'=>2, 'pid'=>0, 'n...

徊忆羽菲 614

PHP实现无限极分类生成分类树的方法

本文实例讲述了PHP实现无限极分类生成分类树的方法。分享给大家供大家参考,具体如下: 现在的分类数据库设计基本都是:每一个分类有一个id主键字段,一个pid指向父类的id,这样便可实现无限级分类,取出的数据就是如下的格式: $arr = array( array("id" => 1 , "pid" => 0 , 'cat' => '栏目一'), array("id" => 2 , "pid" => 0 , 'cat' => '栏目二'), array("

chengjianghao的博客 366

PHP实现无限极分类,引用实现无限极分类

php最简单的无限极分类 先看看二级分类是如何实现的: 数据库: php代码: tp3.2测试的 public function index(){ $db = D('listname'); $arr_a = $db->where(array('ishidden'=>1,'parentid'=>0))->selec...

Bug制造者 578

java无限极分类干嘛用的_无限极分类实现-PHP版

无限极分类实现-PHP版$address = array(array('id'=>1 , 'address'=>'安徽' , 'pid' => 0),array('id'=>2 , 'address'=>'江苏' , 'pid' => 0),array('id'=>3 , 'address'=>'合肥' , 'pid' => 1),arr...

weixin_35373786的博客 144

无限级分类 php_PHP无限极分类函数的实现方法详解

本文实例讲述了PHP无限极分类函数的实现方法。分享给大家供大家参考,具体如下:在开发程序的时候,有时候,我们需要获取所有栏目(包括一级栏目、二级栏目、三级栏目等等),并按照父子关系形成树型结构。可以采取使用递归或者通过引用方式(php中引用类似C或者C++中的指针,只不过换一种说法而已)。通过引用方式实现无限极分类思路:1.即所有待处理的数据进行包装成下标为主键id(pk)的数组,便于有pid获取...

weixin_33816734的博客 286
上一篇: Composer 安装
下一篇: php环境搭建
一滴水墨.
博客等级 码龄9年 10粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值