PHP两种实现无级递归分类的方法

yizhihongxing

PHP两种实现无级递归分类的方法

在开发中,经常需要将数据进行分类,分成无限级分类,本文介绍PHP中两种实现无级递归分类的方法。

方法一:使用递归函数实现

递归函数指的是调用自身函数来达到循环目的的一种方法。递归函数是函数内部直接或间接地调用自身的一种函数调用方式。

分类数组如下所示:

$category = 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'=>'TCL', 'parent_id'=>3),
    array('id'=>7, 'name'=>'海信', 'parent_id'=>3),
);

实现代码如下:

function cate($category, $parent_id=0)
{
    $arr = array();
    foreach($category as $k=>$v)
    {
        if($v['parent_id'] == $parent_id)
        {
            $v['child'] = cate($category,$v['id']);
            $arr[]=$v;
        }
    }
    return $arr;
}

print_r(cate($category));

输出结果:

Array
(
    [0] => Array
        (
            [id] => 1
            [name] => 电器
            [parent_id] => 0
            [child] => Array
                (
                    [0] => Array
                        (
                            [id] => 2
                            [name] => 手机
                            [parent_id] => 1
                            [child] => Array
                                (
                                    [0] => Array
                                        (
                                            [id] => 4
                                            [name] => 小米
                                            [parent_id] => 2
                                            [child] => Array
                                                (
                                                )
                                        )
                                    [1] => Array
                                        (
                                            [id] => 5
                                            [name] => 华为
                                            [parent_id] => 2
                                            [child] => Array
                                                (
                                                )
                                        )
                                )
                        )
                    [1] => Array
                        (
                            [id] => 3
                            [name] => 电视
                            [parent_id] => 1
                            [child] => Array
                                (
                                    [0] => Array
                                        (
                                            [id] => 6
                                            [name] => TCL
                                            [parent_id] => 3
                                            [child] => Array
                                                (
                                                )
                                        )
                                    [1] => Array
                                        (
                                            [id] => 7
                                            [name] => 海信
                                            [parent_id] => 3
                                            [child] => Array
                                                (
                                                )
                                        )
                                )
                        )
                )
        )
)

方法二:使用“引用”方式进行递归编写

“引用”指的是在函数内部直接对实参进行修改,从而达到修改外部变量的效果。在递归函数编写过程中,如果采用值传递,就需要在递归调用函数之后将返回的结果再传递给上级函数,非常麻烦。而采用引用方式,可以直接修改上级传递的数组。

实现代码如下:

function cate(&$category, $parent_id=0){
    $arr = array();
    foreach($category as $key=>&$value){
        if($value['parent_id'] == $parent_id){
            $value['child'] = cate($category, $value['id']);
            $arr[] = $value;
        }
    }
    return $arr;
}

print_r(cate($category));

输出结果同方法一。

通过以上两种方法,可以快速与简便地实现无级递归分类。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:PHP两种实现无级递归分类的方法 - Python技术站

(0)
上一篇 2023年6月27日
下一篇 2023年6月27日

相关文章

  • 下载windows版maven

    下载 Windows 版 Maven Maven 是 Java 项目的构建工具,能够管理项目的依赖关系和构建过程。在 Windows 系统下安装和使用 Maven 非常简单,本篇文章将教你如何下载并安装 Windows 版 Maven。 步骤一:获取 Maven 安装包 访问 Apache Maven 官网,在最新的 Binary 中选择一个版本,并下载适合…

    其他 2023年3月28日
    00
  • 魔兽世界7.3火法圣物搭配 wow7.3火法最佳圣物特质选择优先级介绍

    魔兽世界7.3火法圣物搭配攻略 在7.3版本中,火法作为一个高伤害输出职业,圣物的选择至关重要。以下是本文总结的火法圣物搭配攻略。 火法圣物的特性 在选择圣物时,我们需要考虑每个圣物的特性和它对火法输出的影响。这里列出了火法最需要的几个特性: 火焰伤害加成 火法作为一个火焰系输出职业,火焰伤害加成是至关重要的。这样的圣物能够提供更多的输出伤害,提高火法的DP…

    other 2023年6月27日
    00
  • JVM内存结构相关知识解析

    JVM内存结构相关知识解析 Java虚拟机(JVM)是Java程序的运行环境,它负责将Java字节码转换为机器码并执行。JVM内存结构是指JVM在运行时使用的内存区域,它可以分为以下几个部分: 1. 程序计数器(Program Counter Register) 程序计数器是一块较小的内存区域,它用于存储当前线程正在执行的字节码指令的地址。每个线程都有自己独…

    other 2023年8月1日
    00
  • McAfee 初始化 common updater 子系统失败解决方法小结

    标题: McAfee 初始化 common updater 子系统失败解决方法小结 问题背景:当我们在使用 McAfee 来进行病毒扫描或更新时,可能会遇到一个错误,即 McAfee 初始化 common updater 子系统失败的问题。 解决方法:要解决这个问题,可以尝试以下几个方法: 清理 McAfee 相关进程,重新启动 McAfee 服务首先,要保…

    other 2023年6月20日
    00
  • C语言超细致讲解循环语句

    C语言超细致讲解循环语句 前言 循环语句是一种非常基础也非常重要的程序语句。在实际中,我们常常需要对一段代码进行重复执行。这时候循环结构就变得非常实用。C语言支持多种形式的循环操作,包括for语句、while语句和 do while语句。在本篇文章中,我们将详细讲解C语言中的循环语句相关内容。 for循环 for循环是一种基本的循环语句,它的核心是重复执行一…

    other 2023年6月27日
    00
  • 如何批量创建不同命名的文件夹?创建不同命名文件夹的方法

    可以使用以下三种方法,来批量创建不同命名的文件夹。 方法一:使用命令行 在Windows系统中可以使用命令行的方式创建不同名称的文件夹,具体步骤如下: 打开命令提示符(Win+R 键,输入cmd,回车); 针对所需创建的文件夹个数输入一行命令,在命令行窗口中回车并等待执行完成(这里以创建10个文件夹为例): for /l %i in (1,1,10) do …

    other 2023年6月26日
    00
  • win10预览版10049下载地址 win10 10049官方镜像下载

    Win10预览版10049下载攻略 Win10预览版10049是Windows 10操作系统的一个早期版本,本攻略将详细介绍如何下载Win10预览版10049以及获取官方镜像。 步骤一:访问官方网站 首先,你需要访问微软官方网站以获取Win10预览版10049的下载地址。你可以通过以下链接访问官方网站: 微软官方网站 步骤二:选择下载选项 在微软官方网站上,…

    other 2023年8月4日
    00
  • 使用PP助手2.0为IOS设备安装应用程序教程图解

    使用PP助手2.0为iOS设备安装应用程序教程 PP助手2.0是一款非常实用的iOS设备应用安装工具,它可以为您的iOS设备提供海量的应用资源,并且可以简单快速地安装应用程序。下面,我们将通过以下步骤来为您详细讲解如何使用PP助手2.0为iOS设备安装应用程序。 步骤一:下载PP助手2.0 首先,您需要下载并安装PP助手2.0。您可以在PP助手官方网站(ht…

    other 2023年6月25日
    00
合作推广
合作推广
分享本页
返回顶部