ホームページ バックエンド開発 PHPチュートリアル 無制限の製品カテゴリを読み取るための PHP 再帰の実践的な使用法

無制限の製品カテゴリを読み取るための PHP 再帰の実践的な使用法

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

最近モールプロジェクトに取り組んでいたとき、読み込んだ二次元を整理するために、分類テーブルのデータをpid(親クラスID)を介して各カテゴリに関連付ける必要がありました。データをツリー形式に変換します。I 次のメソッドがプロジェクトにカプセル化されます。

<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('事前番号付け').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 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Laravelのtakeとlimitの使い方を詳しく解説 Laravelのtakeとlimitの使い方を詳しく解説 Mar 10, 2024 pm 05:51 PM

「Laravelのtakeとlimitの使い方を詳しく解説」 Laravelではtakeとlimitの2つがよく使われており、データベースクエリで返されるレコード数を制限するために使用されます。これらの機能は似ていますが、特定の使用シナリオでは微妙な違いがいくつかあります。この記事では、これら 2 つのメソッドの使用法を詳細に分析し、具体的なコード例を示します。 1. Take メソッド Laravel では、take メソッドは返されるレコードの数を制限するために使用され、通常は orderBy メソッドと組み合わせられます。

C# の Array.Sort 関数を使用して配列を並べ替える C# の Array.Sort 関数を使用して配列を並べ替える Nov 18, 2023 am 10:37 AM

タイトル: Array.Sort 関数を使用して C# で配列を並べ替える例 本文: C# では、配列は一般的に使用されるデータ構造であり、多くの場合、配列を並べ替える必要があります。 C# には Array クラスが用意されており、このクラスには配列を簡単に並べ替えるための Sort メソッドがあります。この記事では、C# で Array.Sort 関数を使用して配列を並べ替える方法を示し、具体的なコード例を示します。まず、Array.Sort 関数の基本的な使用法を理解する必要があります。 Array.So

Python で親クラスのプロパティにアクセスするにはどうすればよいですか? Python で親クラスのプロパティにアクセスするにはどうすればよいですか? Aug 26, 2023 am 10:17 AM

オブジェクト指向プログラミングでは、継承により、既存のクラスのプロパティとメソッドを継承する新しいクラスを作成できます。この強力な概念により、プログラムのコードの再利用、モジュール性、拡張性が可能になります。親クラスの属性にアクセスする前に、次のことを確認してください。

PHPのarray_merge_recursive()関数を使用するシンプルで明確な方法 PHPのarray_merge_recursive()関数を使用するシンプルで明確な方法 Jun 27, 2023 pm 01:48 PM

PHP でプログラミングする場合、多くの場合、配列をマージする必要があります。 PHP には、配列のマージを完了するための array_merge() 関数が用意されていますが、配列内に同じキーが存在する場合、この関数は元の値を上書きします。この問題を解決するために、PHP は配列をマージして同じキーの値を保持できる array_merge_recursive() 関数を言語で提供し、プログラム設計をより柔軟にします。配列マージ

PHP で array_combine 関数を使用して 2 つの配列を結合して連想配列にする方法 PHP で array_combine 関数を使用して 2 つの配列を結合して連想配列にする方法 Jun 26, 2023 pm 01:41 PM

PHP には、配列操作をより便利かつ高速にする強力な配列関数が多数あります。 2 つの配列を結合して連想配列にする必要がある場合、PHP の array_combine 関数を使用してこの操作を実行できます。この関数は、実際には、ある配列のキーを別の配列の値として新しい連想配列に結合するために使用されます。次に、PHP の array_combine 関数を使用して 2 つの配列を結合して連想配列にする方法を説明します。 array_comb について学ぶ

Laravelにおけるtakeとlimitの機能比較と使い方 Laravelにおけるtakeとlimitの機能比較と使い方 Mar 09, 2024 pm 09:09 PM

Take と limit は、Laravel でクエリ結果セットの数を制限するためによく使用される 2 つのメソッドです。機能的には類似点がありますが、使用方法や詳細がいくつか異なります。この記事では、2 つのメソッドの機能と使用法を詳細に比較し、読者がそれらの違いとそれらを正しく適用する方法をよりよく理解できるように、具体的なコード例を示します。 1.takeメソッド takeメソッドはLaravelEloquentクエリビルダーにあります

Laravelのtakeとlimitの違いを深く掘り下げる Laravelのtakeとlimitの違いを深く掘り下げる Mar 10, 2024 pm 01:00 PM

Laravelでは、クエリ結果の数を制限するために、takeメソッドやlimitメソッドなど、いくつかのメソッドをよく使用します。どちらもクエリ結果の数を制限するために使用できますが、微妙な違いがいくつかあります。この記事では、Laravelにおけるtakeとlimitの違いを詳しく掘り下げ、具体的なコード例で説明します。まずはtakeメソッドを見てみましょう。 take メソッドは Eloquent の一部であり、通常は次の目的で使用されます。

Java でストリーム操作に Stream の制限およびスキップ機能を使用する方法 Java でストリーム操作に Stream の制限およびスキップ機能を使用する方法 Jun 26, 2023 pm 03:55 PM

StreamAPI は Java 8 で導入され、コレクションの操作を大幅に簡素化できます。 Stream クラスは、フィルタリング、マッピング、マージなど、ストリームを操作するための多くの機能メソッドを提供します。このうち、limit と Skip は、ストリーム操作の要素数を制限するために使用される 2 つの関数です。 1. Limit 関数 limit 関数は、ストリーム内の要素数を制限するために使用され、制限数を表す long 型パラメータ n を受け入れます。制限関数を呼び出した後、新しいストリームが返されます。このストリームには、

See all articles