首页 后端开发 php教程 php实战之使用递归读取商品无限分类

php实战之使用递归读取商品无限分类

Jul 29, 2016 am 09:12 AM
array Level limit parent

最近在做一个商城项目时候,需要取出分类表中的数据,分类表中通过一个pid(父类id)关联各个分类,为了整理读出的二维数据成一个树状的格式,自己在项目中封装了下面一个方法。

<code><span>/**
 * [treeCats description]
 *<span> @param</span>  [array]  $arr   [原始未排序的数组]
 *<span> @param</span>  [array]  $limit [第一个元素代表开始递归的parent_id,默认为0,第二个元素代表剔除元素及子元素cat_id,如果没有传值,默认为0]
 *<span> @param</span>  integer $level [函数调用的深度]
 *<span> @return</span> [array]         [排好序的数组]
 */</span><span>public</span><span><span>function</span><span>treeCats</span><span>(<span>$arr</span>,<span>$limit</span>,<span>$level</span>=<span>0</span>)</span>{</span><span>$rec</span> = <span>array</span>();
            <span>//先消除cat_id对应的值</span><span>foreach</span> (<span>$arr</span><span>as</span><span>$key</span>=><span>$value</span>){
            <span>if</span>(<span>$value</span>[<span>'cat_id'</span>]!=<span>$limit</span>[<span>'cd'</span>]){
                <span>$arr_new</span> [<span>$key</span>]=<span>$value</span>;
            }

        }
        <span>//对于新数组进行遍历</span><span>foreach</span> (<span>$arr_new</span><span>as</span><span>$key</span> => <span>$value</span>) {
        <span>if</span>(<span>$value</span>[<span>'parent_id'</span>]==<span>$limit</span>[<span>"pd"</span>] &&<span>$value</span>[<span>'parent_id'</span>]!=<span>$limit</span>[<span>"cd"</span>]){
                <span>$value</span>[<span>'level'</span>]=<span>$level</span>;
                <span>$rec</span> []= <span>$value</span>;
                <span>//生成用于下一层循环的数组</span><span>$next_limit</span> = <span>array</span>(<span>"pd"</span>=><span>$value</span>[<span>'cat_id'</span>],<span>"cd"</span>=><span>$limit</span>[<span>"cd"</span>]);

                <span>$rec</span> = array_merge(<span>$rec</span>,<span>$this</span>->treeCats(<span>$arr</span>,<span>$next_limit</span>,<span>$level</span>+<span>1</span>));
            }
        }       
        <span>return</span><span>$rec</span>;
    }
</code>
登录后复制

这里设置$limit 的应用场景是如果修改这个分类的父分类为它原来的子分类的话,这个分类枝就发生丢失了,所以这时候就应该将可选类里面剔除它的子类。
php实战之使用递归读取商品无限分类

').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i ').text(i)); }; $numbering.fadeIn(1700); }); });

以上就介绍了php实战之使用递归读取商品无限分类,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它们
4 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

Laravel中take和limit的使用方法详解 Laravel中take和limit的使用方法详解 Mar 10, 2024 pm 05:51 PM

《Laravel中take和limit的使用方法详解》在Laravel中,take和limit是两个常用的方法,用于在数据库查询中限制返回的记录数。虽然它们的作用类似,但在具体的使用场景中有一些细微的区别。本文将详细解析这两个方法的用法,并提供具体的代码示例。一、take方法在Laravel中,take方法用于限制返回的记录数,通常结合orderBy方法一起

使用C#中的Array.Sort函数对数组进行排序 使用C#中的Array.Sort函数对数组进行排序 Nov 18, 2023 am 10:37 AM

标题:C#中使用Array.Sort函数对数组进行排序的示例正文:在C#中,数组是一种常用的数据结构,经常需要对数组进行排序操作。C#提供了Array类,其中有Sort方法可以方便地对数组进行排序。本文将演示如何使用C#中的Array.Sort函数对数组进行排序,并提供具体的代码示例。首先,我们需要了解一下Array.Sort函数的基本用法。Array.So

如何在Python中访问父类属性? 如何在Python中访问父类属性? Aug 26, 2023 am 10:17 AM

在面向对象编程中,继承允许我们创建继承现有类的属性和方法的新类。这个强大的概念可以在我们的程序中实现代码重用、模块化和可扩展性。在深入研究访问父类属性之前,让我们先了解一下

如何使用PHP中的array_combine函数将两个数组拼成关联数组 如何使用PHP中的array_combine函数将两个数组拼成关联数组 Jun 26, 2023 pm 01:41 PM

在PHP中,有许多强大的数组函数可以使数组的操作更加方便和快捷。当我们需要将两个数组拼成一个关联数组时,可以使用PHP的array_combine函数来实现这一操作。这个函数实际上是用来将一个数组的键作为另一个数组的值,合并成一个新的关联数组。接下来,我们将会讲解如何使用PHP中的array_combine函数将两个数组拼成关联数组。了解array_comb

简单明了的PHP array_merge_recursive()函数使用方法 简单明了的PHP array_merge_recursive()函数使用方法 Jun 27, 2023 pm 01:48 PM

在进行PHP编程时,我们常常需要对数组进行合并。PHP提供了array_merge()函数来完成数组合并的工作,不过当数组中存在相同的键时,该函数会覆盖原有的值。为了解决这个问题,PHP在语言中还提供了一个array_merge_recursive()函数,该函数可以合并数组并保留相同键的值,使得程序的设计变得更加灵活。array_merge

Laravel中take和limit的功能及用法对比 Laravel中take和limit的功能及用法对比 Mar 09, 2024 pm 09:09 PM

Laravel中take和limit是两种常用的方法,用于限制查询结果集的数量。虽然它们在功能上有一定的相似之处,但在使用方式和一些细节上有所不同。本文将对这两种方法的功能及用法进行详细对比,同时提供具体的代码示例,帮助读者更好地理解它们之间的区别和如何正确地应用。1.take方法take方法是LaravelEloquent查询构建器中

深入探讨Laravel中take和limit的不同之处 深入探讨Laravel中take和limit的不同之处 Mar 10, 2024 pm 01:00 PM

在Laravel中,我们经常会用到一些方法来限制查询结果的数量,其中包括take和limit两个方法。虽然它们都可以用来限制查询结果的数量,但它们之间确实有一些细微的区别。在本文中,我们将深入探讨take和limit在Laravel中的不同之处,并通过具体的代码示例来加以说明。首先,让我们来看一下take方法。take方法是Eloquent的一部分,通常用于

如何使用Java中的Stream的limit和skip函数进行流操作 如何使用Java中的Stream的limit和skip函数进行流操作 Jun 26, 2023 pm 03:55 PM

Java8中引入了StreamAPI,它能够极大地简化对集合的操作。Stream类提供了许多用于操作流的函数式方法,包括过滤、映射、合并等等。其中,limit和skip是用于流操作中限制元素数量的两个函数。一、limit函数limit函数用于限制流中元素的数量,它接受一个long类型的参数n,表示限制的数量。调用limit函数后,返回一个新的流,它仅包含

See all articles