ホームページ バックエンド開発 PHPチュートリアル PHP開発で無制限の分類機能を使う方法

PHP開発で無制限の分類機能を使う方法

Jun 25, 2023 pm 02:36 PM
再帰関数 PHP 無制限の分類 分類ツリー構造

インターネットの急速な発展に伴い、Web サイトの機能と要件はますます複雑になっています。その中でも無限分類機能は情報を整理・管理する上で非常に重要な手段です。開発者が情報を効果的に整理し、ユーザーが必要なものをより迅速に見つけられるようにするのに役立ちます。今回はPHP開発における無制限分類機能の使い方を紹介します。

無制限の分類機能とは

従来の分類では、各分類は 1 つの親分類と複数の子分類のみを持つことができます。ただし、一部の複雑なシナリオでは、この分類方法は制限されます。たとえば、製品は複数のブランド、複数の分類グループ、複数の地域などに属する場合があります。現時点では、無制限の分類機能により、より良いソリューションが提供されます。

無制限分類機能は、その名の通りレベル制限がなく、分類を自由に組み合わせることができ、一つのデータが複数の分類に属することも可能です。この機能は、ブログ分類、商品分類、ニュース分類など、データを柔軟に整理する必要があるシナリオに適しています。

無制限分類機能の実装方法

以下では、PHP開発で無制限分類機能を実装する方法をステップバイステップで紹介します。

ステップ 1: データベース テーブルを作成する

データベース テーブルを作成するときは、分類 ID、分類名、分類の親 ID という 3 つのキー フィールドを考慮する必要があります。カテゴリ ID は各カテゴリの一意の識別子であり、カテゴリ名はカテゴリ情報を表示するために使用され、カテゴリ親 ID はカテゴリの親カテゴリ ID を示します。

CREATE TABLE categories (
id int(11) NOT NULL,
name varchar(100) NOT NULL,
parent_id int(11) NOT NULL,
PRIMARY KEY (id)
);

ステップ 2: 機密データを挿入

カテゴリ データをデータベース テーブルに挿入する場合、ネストされたセット モデルを使用できます。つまり、左右の値を使用して各カテゴリ レベルの組織関係を記述します。例は次のとおりです:

INSERT INTO categories (id, name, parent_id, lft, rgt) VALUES
(1 , '電化製品', 0, 1, 10),
(2, 'テレビ', 1, 2, 3),
(3, '携帯電化製品', 1, 4, 9),
(4, 'スマートフォン', 3, 5, 6),
(5, 'フィーチャーフォン', 3, 7, 8);

このうち、lft および rgt は、カテゴリ間の違いを説明します。階層関係の場合、サブカテゴリと親カテゴリを再帰的にクエリできます。

ステップ 3: 機密データをクエリする

機密データをクエリするときは、再帰クエリを使用できます。例は次のとおりです:

function getCategories($parentId = 0 , $ level = 0)
{

$sql = 'SELECT * FROM `categories` WHERE `parent_id` = ? ORDER BY `lft` ASC';
$stmt = $pdo->prepare($sql);
$stmt->execute([$parentId]);
$categories = $stmt->fetchAll(PDO::FETCH_ASSOC);

if (!empty($categories)) {
    $level++;
    $categories = array_map(function ($category) use ($level) {
        $category['level'] = $level;
        $category['children'] = getCategories($category['id'], $level);
        return $category;
    }, $categories);
}

return $categories;
ログイン後にコピー

}

この関数では、まず現在の親カテゴリの下にあるすべてのサブカテゴリをクエリし、左辺値で並べ替えます。次に、それ自体を再帰的に呼び出すことによって、サブカテゴリのサブカテゴリがクエリされ、children フィールドに保存されます。最後に、カテゴリカル配列が返されます。

ステップ 4: 機密データを表示する

機密データを表示するときは、再帰的走査を使用できます。例は次のとおりです:

function showCategories($categories)
{

if (!empty($categories)) {
    echo '<ul>';
    foreach ($categories as $category) {
        echo '<li>' . $category['name'] . '</li>';
        if (!empty($category['children'])) {
            showCategories($category['children']);
        }
    }
    echo '</ul>';
}
ログイン後にコピー

}

この関数では、まずカテゴリ配列が空かどうかを判断します。空でない場合は、配列を走査してカテゴリ名を表示します。次に、カテゴリにサブカテゴリがある場合は、それ自体を再帰的に呼び出してサブカテゴリを表示します。

結論

上記の 4 つの手順により、無制限の分類関数を簡単に実装でき、再帰的手法を使用して分類されたデータを表示することもできます。この関数は、実際の開発、特に電子商取引、ニュース、ブログ、その他のシナリオで非常に一般的です。この記事が PHP 開発者にインスピレーションを与え、実際の開発ニーズにうまく対処できるようになれば幸いです。

以上がPHP開発で無制限の分類機能を使う方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

C++ 再帰関数の最適化手法にはどのようなものがありますか? C++ 再帰関数の最適化手法にはどのようなものがありますか? Apr 17, 2024 pm 12:24 PM

再帰関数のパフォーマンスを最適化するには、次の手法を使用できます。 末尾再帰を使用する: 再帰呼び出しを関数の最後に配置して、再帰オーバーヘッドを回避します。メモ化: 計算の繰り返しを避けるために、計算結果を保存します。分割統治法: 問題を分解し、サブ問題を再帰的に解決して効率を向上させます。

Python コードでの過剰な関数のネスト エラーを解決するにはどうすればよいですか? Python コードでの過剰な関数のネスト エラーを解決するにはどうすればよいですか? Jun 25, 2023 pm 12:35 PM

Python は非常に強力なプログラミング言語であり、多くのプログラマーが主要なプログラミング言語として Python を選択しています。ただし、コード内で関数のネストが多すぎると、プログラムの保守と理解が困難になる可能性があります。この記事では、Python コードでの過剰な関数のネスト エラーを解決する方法を説明します。関数のネストの簡単な説明 関数のネストとは、関数の本体内で別の関数を定義するプロセスを指します。関数をネストすると、プログラムの構造がより明確になり、コードが読みやすく、保守しやすくなります。ただし、ネストされた関数が多すぎると、コード構造が過度に複雑になる可能性があります。

検索アルゴリズムに C++ 再帰関数を適用しますか? 検索アルゴリズムに C++ 再帰関数を適用しますか? Apr 17, 2024 pm 04:30 PM

再帰関数は、ツリー状のデータ構造を探索するための検索アルゴリズムで使用されます。深さ優先検索ではスタックを使用してノードを探索しますが、幅優先検索ではキューを使用してレイヤーごとに検索します。ファイルの検索などの実際のアプリケーションでは、再帰関数を使用して、指定されたディレクトリ内の特定のファイルを検索できます。

C++ の再帰関数の終了条件は何ですか? C++ の再帰関数の終了条件は何ですか? Apr 17, 2024 am 11:33 AM

C++ 再帰関数の終了条件は次のとおりです。 ベースライン条件: 関数が結果を直接返すことができる状態に達したかどうかを確認し、通常は特定の条件またはパラメーター値がしきい値を満たすかどうかを判断します。再帰終了条件: ベースライン条件の代替または追加で、再帰の深さを追跡するか最大再帰の深さ制限を設定することによって、一定回数の再帰呼び出し後に関数が停止するようにします。

ソートアルゴリズムにおけるC++の再帰関数の応用? ソートアルゴリズムにおけるC++の再帰関数の応用? Apr 17, 2024 am 11:06 AM

C++ のソート アルゴリズムにおける再帰関数の適用 再帰関数によって実装された挿入ソートおよびマージ ソート アルゴリズムは、複雑な問題をより小さなサブ問題に分解し、再帰呼び出しを通じてそれらを効率的に解決できます。挿入ソート: 要素を 1 つずつ挿入して配列をソートします。マージソート: 分割統治し、配列を分割してサブ配列を再帰的にソートし、最後にソートされたサブ配列をマージします。

C++ 再帰関数の末尾再帰最適化戦略を実装するにはどうすればよいですか? C++ 再帰関数の末尾再帰最適化戦略を実装するにはどうすればよいですか? Apr 17, 2024 pm 02:42 PM

末尾再帰最適化戦略は、末尾再帰呼び出しをループに変換することで関数呼び出しスタックの深さを効果的に削減し、スタック オーバーフローを防ぎます。最適化戦略には以下が含まれます。 末尾再帰の検出: 関数内に末尾再帰呼び出しがあるかどうかを確認します。関数をループに変換する: 末尾再帰呼び出しの代わりにループを使用し、スタックを維持して中間状態を保存します。

Go言語で再帰関数を使用して階乗を実装するにはどうすればよいですか? Go言語で再帰関数を使用して階乗を実装するにはどうすればよいですか? Jul 31, 2023 pm 08:31 PM

Go言語で再帰関数を使用して階乗を実装するにはどうすればよいですか?階乗は、負でない整数 n に、それより小さい 1 までのすべての正の整数を乗算する数学の一般的な計算です。たとえば、5 の階乗は 5! と表現でき、54321=120 と計算されます。コンピューター プログラミングでは、階乗計算を実装するために再帰関数をよく使用します。まず、再帰関数の概念を理解する必要があります。再帰関数とは、関数の定義内で関数自体を呼び出すプロセスを指します。問題を解決するとき、再帰関数は継続的に実行されます。

Golang関数の再帰関数の詳細に関する注意事項 Golang関数の再帰関数の詳細に関する注意事項 May 16, 2023 am 08:09 AM

Golang では、再帰は関数がそれ自体を呼び出す方法です。階乗やフィボナッチ数列の計算など、多くの問題は再帰関数を使用して解決できます。ただし、再帰関数を記述する場合は、いくつかの点に注意する必要があります。そうしないと、プログラム エラーが発生する可能性があります。この記事では、開発者がより安定した信頼性の高い再帰関数を作成できるように、Golang の再帰関数の詳細を紹介します。基本的な状況の処理 再帰関数を作成するときは、まず基本的な状況、つまり再帰関数の終了条件を考慮する必要があります。陽性がない場合

See all articles