Maison développement back-end tutoriel 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>
Copier après la connexion

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

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

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

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Commandes de chat et comment les utiliser
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Explication détaillée de la façon d'utiliser take et limit dans Laravel Explication détaillée de la façon d'utiliser take et limit dans Laravel Mar 10, 2024 pm 05:51 PM

"Explication détaillée de l'utilisation de take et limit dans Laravel" Dans Laravel, take et limit sont deux méthodes couramment utilisées pour limiter le nombre d'enregistrements renvoyés dans les requêtes de base de données. Bien que leurs fonctions soient similaires, il existe quelques différences subtiles dans les scénarios d'utilisation spécifiques. Cet article analysera en détail l’utilisation de ces deux méthodes et fournira des exemples de code spécifiques. 1. Méthode Take Dans Laravel, la méthode take est utilisée pour limiter le nombre d'enregistrements renvoyés, généralement combinée avec la méthode orderBy.

Trier le tableau à l'aide de la fonction Array.Sort en C# Trier le tableau à l'aide de la fonction Array.Sort en C# Nov 18, 2023 am 10:37 AM

Titre : Exemple d'utilisation de la fonction Array.Sort pour trier un tableau en C# Texte : En C#, un tableau est une structure de données couramment utilisée, et il est souvent nécessaire de trier le tableau. C# fournit la classe Array, qui possède la méthode Sort pour trier facilement les tableaux. Cet article explique comment utiliser la fonction Array.Sort en C# pour trier un tableau et fournit des exemples de code spécifiques. Tout d’abord, nous devons comprendre l’utilisation de base de la fonction Array.Sort. Tableau.Donc

Comment accéder aux propriétés de la classe parent en Python ? Comment accéder aux propriétés de la classe parent en Python ? Aug 26, 2023 am 10:17 AM

Dans la programmation orientée objet, l'héritage nous permet de créer de nouvelles classes qui héritent des propriétés et des méthodes d'une classe existante. Ce concept puissant permet la réutilisation du code, la modularité et l'extensibilité dans nos programmes. Avant de plonger dans l'accès aux attributs de classe parent, commençons par

Comment utiliser la fonction array_combine en PHP pour combiner deux tableaux en un tableau associatif Comment utiliser la fonction array_combine en PHP pour combiner deux tableaux en un tableau associatif Jun 26, 2023 pm 01:41 PM

En PHP, il existe de nombreuses fonctions de tableau puissantes qui peuvent rendre les opérations sur les tableaux plus pratiques et plus rapides. Lorsque nous devons combiner deux tableaux en un tableau associatif, nous pouvons utiliser la fonction array_combine de PHP pour réaliser cette opération. Cette fonction est en fait utilisée pour combiner les clés d'un tableau avec les valeurs d'un autre tableau dans un nouveau tableau associatif. Ensuite, nous expliquerons comment utiliser la fonction array_combine en PHP pour combiner deux tableaux en un tableau associatif. En savoir plus sur array_comb

Méthode simple et claire pour utiliser la fonction PHP array_merge_recursive() Méthode simple et claire pour utiliser la fonction PHP array_merge_recursive() Jun 27, 2023 pm 01:48 PM

Lors de la programmation en PHP, nous avons souvent besoin de fusionner des tableaux. PHP fournit la fonction array_merge() pour terminer la fusion du tableau, mais lorsque la même clé existe dans le tableau, cette fonction écrasera la valeur d'origine. Afin de résoudre ce problème, PHP fournit également une fonction array_merge_recursive() dans le langage, qui peut fusionner des tableaux et conserver les valeurs des mêmes clés, rendant la conception du programme plus flexible. tableau_merge

Comparaison des fonctions et utilisation de take et limit dans Laravel Comparaison des fonctions et utilisation de take et limit dans Laravel Mar 09, 2024 pm 09:09 PM

Take et limit sont deux méthodes couramment utilisées dans Laravel pour limiter le nombre de jeux de résultats de requête. Bien qu’ils présentent certaines similitudes en termes de fonctionnalités, ils diffèrent par leur utilisation et certains détails. Cet article procédera à une comparaison détaillée des fonctions et de l'utilisation de ces deux méthodes, et fournira des exemples de code spécifiques pour aider les lecteurs à mieux comprendre les différences entre elles et comment les appliquer correctement. 1.méthodetake La méthode take est dans le générateur de requêtes LaravelEloquent

Une plongée approfondie dans les différences entre prendre et limiter dans Laravel Une plongée approfondie dans les différences entre prendre et limiter dans Laravel Mar 10, 2024 pm 01:00 PM

Dans Laravel, nous utilisons souvent certaines méthodes pour limiter le nombre de résultats de requête, notamment les méthodes take et limit. Bien qu’ils puissent tous deux être utilisés pour limiter le nombre de résultats de requête, ils présentent quelques différences subtiles. Dans cet article, nous examinerons en profondeur les différences entre take et limit dans Laravel, en les illustrant avec des exemples de code concrets. Tout d’abord, regardons la méthode take. La méthode take fait partie d'Eloquent et est généralement utilisée pour

Comment utiliser les fonctions de limite et de saut de Stream en Java pour les opérations de flux Comment utiliser les fonctions de limite et de saut de Stream en Java pour les opérations de flux Jun 26, 2023 pm 03:55 PM

StreamAPI a été introduit dans Java 8, ce qui peut grandement simplifier le fonctionnement des collections. La classe Stream fournit de nombreuses méthodes fonctionnelles pour fonctionner sur les flux, notamment le filtrage, le mappage, la fusion, etc. Parmi elles, limit et skip sont deux fonctions utilisées pour limiter le nombre d'éléments dans les opérations de flux. 1. Fonction limite La fonction limite est utilisée pour limiter le nombre d'éléments dans le flux. Elle accepte un paramètre de type long n, qui représente le nombre de limites. Après avoir appelé la fonction limit, un nouveau flux est renvoyé, qui contient uniquement

See all articles