php用数组返回无限分类的列表数据的代码

当我们需要生成一个无限分类的列表数据时,可以使用 PHP 的数组来进行返回,下面是生成无限分类列表数据的具体代码和步骤:

1.准备数据

首先,我们需要准备一个数组,包含分类列表数据的信息,如下所示:

$data = array(
    array('id' => 1, 'name' => '电子产品', 'parent_id' => 0),
    array('id' => 2, 'name' => '手机', 'parent_id' => 1),
    array('id' => 3, 'name' => '笔记本电脑', 'parent_id' => 1),
    array('id' => 4, 'name' => '华为手机', 'parent_id' => 2),
    array('id' => 5, 'name' => '小米手机', 'parent_id' => 2),
    array('id' => 6, 'name' => '戴尔电脑', 'parent_id' => 3),
    array('id' => 7, 'name' => '华硕电脑', 'parent_id' => 3),
    array('id' => 8, 'name' => '家用电器', 'parent_id' => 0),
    array('id' => 9, 'name' => '冰箱', 'parent_id' => 8),
    array('id' => 10, 'name' => '电视', 'parent_id' => 8),
    array('id' => 11, 'name' => '海信电视', 'parent_id' => 10),
    array('id' => 12, 'name' => '创维电视', 'parent_id' => 10)
);

2.编写递归函数

接下来,我们需要编写一个递归函数,用于将分类数据转换成树形结构,实现代码如下所示:

function buildTree($data, $parent_id = 0, $level = 0) {
    static $tree = array();
    foreach ($data as $item) {
        if ($item['parent_id'] == $parent_id) {
            $item['level'] = $level;
            $tree[] = $item;
            buildTree($data, $item['id'], $level + 1);
        }
    }
    return $tree;
}

3.生成无限分类列表数据

最后,我们可以调用 buildTree 函数来生成无限分类列表数据,具体代码如下所示:

$data = array(
    array('id' => 1, 'name' => '电子产品', 'parent_id' => 0),
    array('id' => 2, 'name' => '手机', 'parent_id' => 1),
    array('id' => 3, 'name' => '笔记本电脑', 'parent_id' => 1),
    array('id' => 4, 'name' => '华为手机', 'parent_id' => 2),
    array('id' => 5, 'name' => '小米手机', 'parent_id' => 2),
    array('id' => 6, 'name' => '戴尔电脑', 'parent_id' => 3),
    array('id' => 7, 'name' => '华硕电脑', 'parent_id' => 3),
    array('id' => 8, 'name' => '家用电器', 'parent_id' => 0),
    array('id' => 9, 'name' => '冰箱', 'parent_id' => 8),
    array('id' => 10, 'name' => '电视', 'parent_id' => 8),
    array('id' => 11, 'name' => '海信电视', 'parent_id' => 10),
    array('id' => 12, 'name' => '创维电视', 'parent_id' => 10)
);

$tree = buildTree($data);

echo '<ul>';
foreach ($tree as $item) {
    echo '<li>';
    echo str_repeat('- ', $item['level']) . $item['name'];
    echo '</li>';
}
echo '</ul>';

以上代码可以输出以下无限分类列表:

  • 电子产品
  • 手机
    • 华为手机
    • 小米手机
  • 笔记本电脑
    • 戴尔电脑
    • 华硕电脑
  • 家用电器
  • 冰箱
  • 电视
    • 海信电视
    • 创维电视

另外,我们还可以将上面的代码稍作修改,生成一个有层级关系的无限分类列表,具体代码如下所示:

function buildList($data, $parent_id = 0) {
    $html = '<ul>';
    foreach ($data as $item) {
        if ($item['parent_id'] == $parent_id) {
            $html .= '<li>';
            $html .= $item['name'];
            $html .= buildList($data, $item['id']);
            $html .= '</li>';
        }
    }
    $html .= '</ul>';
    return $html;
}

$data = array(
    array('id' => 1, 'name' => '电子产品', 'parent_id' => 0),
    array('id' => 2, 'name' => '手机', 'parent_id' => 1),
    array('id' => 3, 'name' => '笔记本电脑', 'parent_id' => 1),
    array('id' => 4, 'name' => '华为手机', 'parent_id' => 2),
    array('id' => 5, 'name' => '小米手机', 'parent_id' => 2),
    array('id' => 6, 'name' => '戴尔电脑', 'parent_id' => 3),
    array('id' => 7, 'name' => '华硕电脑', 'parent_id' => 3),
    array('id' => 8, 'name' => '家用电器', 'parent_id' => 0),
    array('id' => 9, 'name' => '冰箱', 'parent_id' => 8),
    array('id' => 10, 'name' => '电视', 'parent_id' => 8),
    array('id' => 11, 'name' => '海信电视', 'parent_id' => 10),
    array('id' => 12, 'name' => '创维电视', 'parent_id' => 10)
);

$html = buildList($data);
echo $html;

以上代码可以输出以下有层级关系的无限分类列表:

  • 电子产品
  • 手机
    • 华为手机
    • 小米手机
  • 笔记本电脑
    • 戴尔电脑
    • 华硕电脑
  • 家用电器
  • 冰箱
  • 电视
    • 海信电视
    • 创维电视

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:php用数组返回无限分类的列表数据的代码 - Python技术站

(0)
上一篇 2023年5月26日
下一篇 2023年5月26日

相关文章

  • 深入PHP内存相关的功能特性详解

    深入PHP内存相关的功能特性详解 PHP作为一门高级语言,具有自动内存管理的特性,这意味着程序员不需要手动管理内存。不过作为一个PHP开发者,了解PHP内存管理的机制和一些特性还是很有必要的,这有助于你更好地理解PHP的行为以及优化你的代码。 PHP内存管理机制 PHP内存管理是基于引用计数的,每一个用于存储数据的变量都有一个相关的“引用计数器”,用于表示当…

    PHP 2023年5月30日
    00
  • 微信端调取相册和摄像头功能,实现图片上传,并上传到服务器

    下面将为您详细讲解“微信端调取相册和摄像头功能,实现图片上传,并上传到服务器”的完整攻略。 1. 确定文件上传API接口 在开始进行文件上传操作之前,需要确认已经有可用的API接口供前端调用,该API接口能够接收前端发送过来的图片文件并保存到服务器指定的位置。API接口可以使用PHP、Java、Python等任何服务器端语言实现,这里以PHP为例。 <…

    PHP 2023年5月30日
    00
  • PHP钩子实现方法解析

    针对“PHP钩子实现方法解析”的完整攻略,我将按照以下格式进行讲解: PHP钩子实现方法解析 什么是钩子 钩子是一种非常重要的编程方法,它允许开发人员在不更改现有代码的情况下,扩展应用程序的某些功能或者修改应用程序的行为。具体地说,钩子是一些预先定义好的接口,由应用程序开发者预留给第三方插件开发者使用。 钩子的实现方式 PHP是一种非常灵活的编程语言,提供了…

    PHP 2023年5月27日
    00
  • php生成用户密码的两种方式

    下面是PHP生成用户密码的两种方式的具体攻略: 方式一:使用PHP内置函数password_hash() 使用PHP内置函数password_hash()生成密码是一种比较常用的方式。password_hash()函数能够帮助我们生成安全的哈希密码,同时也自动进行加盐操作,避免了简单的hash被彩虹表破解。 代码示例 <?php $password =…

    PHP 2023年5月26日
    00
  • 详解PHP优化巨量关键词的匹配

    下面就为大家详细讲解“详解PHP优化巨量关键词的匹配”的完整攻略: 1. 优化思路 在实现巨量关键词的匹配之前,应该先考虑如何实现快速匹配。这里介绍一种基于Trie树的算法,通过建立Trie树,将关键词按照从左往右的顺序插入到Trie树中,然后遍历输入字符串,在Trie树上按照输入字符串的字符依次匹配,直到匹配成功或者匹配失败。这种算法的时间复杂度为O(nk…

    PHP 2023年5月27日
    00
  • PHP中的多种加密技术及代码示例解析

    PHP中的多种加密技术及代码示例解析 概述 PHP是一种广泛使用的Web编程语言,为保护数据的安全性,使用加密技术是一种常见的解决方案。本文将介绍PHP中常用的几种加密技术,并给出相应的代码示例及解析。 1. MD5加密 MD5是一种常用的加密算法,可将任意长度的数据转换为固定长度的散列值。在PHP中,可以使用md5()函数来进行MD5加密,示例如下: $s…

    PHP 2023年5月24日
    00
  • 本地搭建微信小程序服务器的实现方法

    本地搭建微信小程序服务器的实现方法主要包括以下几个步骤: 确定需要使用的服务器框架:目前常用的有Express、Koa等框架。这里以Express为例进行讲解。 安装Node.js环境:在本地搭建服务器之前,需要先安装Node.js环境。可以到Node.js的官网(https://nodejs.org/en/)下载安装包,选择对应的操作系统版本进行安装。 初…

    PHP 2023年5月30日
    00
  • token验证

    token验证 什么是token?我相信很多开发者都或多或少听过基于 token 的用户鉴权和基于 session 的用户鉴权,而今天说的 token 验证就是第一种了。token 的意思是“令牌”,是用户第一次登录服务器返回的,它能让用户不需要提交账户和密码就能进行服务器验证身份,它是被放在请求头中一起提交给服务器的。 为什么用 token 验证?怎么用 …

    PHP 2023年4月17日
    00
合作推广
合作推广
分享本页
返回顶部