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

yizhihongxing

当我们需要生成一个无限分类的列表数据时,可以使用 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实现微信退款的方法示例”的完整攻略: 1.准备工作 在进行微信退款前,我们需要确保已经完成以下准备工作: 1.1 已经在微信公众平台中创建了应用,并且获得了appid和mchid等信息。 1.2 已经生成了证书文件,包括apiclient_cert.pem和apiclient_key.pem。 1.3 已经开通了微信支付的退款功能。 2.退…

    PHP 2023年5月23日
    00
  • PHP CURL函数库第1/2页

    我来为您详细说明“PHP CURL函数库第1/2页”的完整攻略。 什么是CURL? CURL是一个用于数据传输的工具和库,支持多种协议,可以通过HTTP、HTTPS、FTP等协议进行数据传输,也可以进行通过SMTP、POP3等协议进行邮件发送和接收。PHP中提供了对CURL的支持,可以使用CURL库来建立与外界的通信并获取数据,从而实现对网页、API等数据的…

    PHP 2023年5月27日
    00
  • PHP文件操作实现代码分享

    下面是关于”PHP 文件操作实现代码分享”的完整攻略。 1. 文件操作概述 在 PHP 中,通过文件操作函数可以实现对文件的创建、打开、读写和关闭等操作。使用这些函数可以轻松实现文件的管理,可以用于创建用户日志、数据备份、文件上传、图片裁剪等。 2. 文件操作的常用函数 以下为 PHP 中文件操作的常用函数: fopen() – 打开文件或 URL fwri…

    PHP 2023年5月23日
    00
  • Thinkphp3.2.3反序列化漏洞实例分析

    下面是“Thinkphp3.2.3反序列化漏洞实例分析”的完整使用攻略,包括漏洞描述、漏洞分析、漏洞利用和两个示例说明。 漏洞描述 ThinkPHP是一种常用的PHP开发框架,它具有强大的功能灵活性。然而,由于框架的灵活性,它也容易受到反序列化漏洞的攻击。攻击者可以通过在应用程序中注入恶意序列化数据来执行任意代码。 漏洞分析 反序列化漏洞是一种常见的Web应…

    PHP 2023年5月12日
    00
  • PHP响应post请求上传文件的方法

    下面是详细讲解“PHP响应post请求上传文件的方法”的完整攻略。 前置知识 在讲解上传文件的过程之前,我们需要先了解以下几点相关知识: HTML的表单提交方式 表单提交方式有两种,分别是GET和POST。 enctype属性 enctype属性规定在提交表单时要使用哪种内容类型。当表单包含 enctype=”multipart/form-data” 属性时…

    PHP 2023年5月26日
    00
  • 开源php中文分词系统SCWS安装和使用实例

    开源php中文分词系统SCWS安装和使用实例 一、SCWS简介 SCWS是一款针对中文语言的高效处理系统,它可以对中文进行分词、词性标注、关键词提取等多种处理,是中文自然语言处理领域的重要工具。 二、SCWS安装 1. 准备环境 在安装SCWS之前,需要先确认服务器上已经安装了以下软件: GCC编译器 PHP开发包 Libiconv库 Pcre库 如果没有安…

    PHP 2023年5月23日
    00
  • PHP判断两个给定日期是否在同一周的方法

    判断两个给定日期是否在同一周,可以使用PHP的date函数和strtotime函数完成。具体方法如下: 获取两个日期对应的星期几 使用date函数可以获取一个日期对应的星期几,例如: $date1 = ‘2021-07-01’; $week1 = date(‘w’, strtotime($date1)); $date2 = ‘2021-07-05’; $we…

    PHP 2023年5月26日
    00
  • PHP实现PDF转图片的详细过程(使用imagick)

    下面是“PHP实现PDF转图片的详细过程(使用imagick)”的完整使用攻略,包括问题原因、解决方法和两个示例。 问题原因 在Web开发,有时需要将PDF文件转换为图片以便在网页上显示。但是,PHP本身不支持PDF文件的处理,因此需要使用三方库来实现PDF转图片的。 解决方法 以下是使用imagick库实现PDF转图片的方法: 安装imagick库 在使用…

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