ホームページ >バックエンド開発 >PHPチュートリアル >PHP でループ クエリのサブカテゴリを効率的に実装するいくつかの方法
PHP は、Web 開発で広く使用されているサーバー側スクリプト言語です。 PHP 開発では、カテゴリとそのサブカテゴリをクエリして表示する必要がある状況によく遭遇します。この記事では、ループ クエリのサブカテゴリを効率的に実装するいくつかの方法を検討し、具体的なコード例を示します。
再帰はツリー構造を走査する一般的な方法であり、ネストされた分類のクエリに適しています。以下は、単純な再帰クエリ サブカテゴリのコード例です。
function getSubcategories($category_id) { $subcategories = []; $query = "SELECT id, name FROM categories WHERE parent_id = $category_id"; $result = mysqli_query($connection, $query); while ($row = mysqli_fetch_assoc($result)) { $subcategories[] = $row; $subcategories = array_merge($subcategories, getSubcategories($row['id'])); } return $subcategories; } $category_id = 1; $subcategories = getSubcategories($category_id); print_r($subcategories);
クロージャ関数は、関数内で使用できる PHP の強力な機能です。匿名関数を作成し、関数の外で呼び出します。以下は、クロージャ関数を使用してサブカテゴリをクエリするサンプル コードです。
$categories = []; $fetchCategories = function ($parent_id) use (&$fetchCategories, &$categories) { $query = "SELECT id, name FROM categories WHERE parent_id = $parent_id"; $result = mysqli_query($connection, $query); while ($row = mysqli_fetch_assoc($result)) { $categories[] = $row; $fetchCategories($row['id']); } }; $fetchCategories(1); print_r($categories);
1 つのデータベース クエリですべてのカテゴリを取得します。 PHP コードを使用してサブカテゴリ ツリーを再帰的に構築します。以下はサンプル コードです。
$query = "SELECT id, name, parent_id FROM categories"; $result = mysqli_query($connection, $query); $categories = []; while ($row = mysqli_fetch_assoc($result)) { $categories[$row['id']] = $row; } $nestedCategories = []; foreach ($categories as $id => $category) { if ($category['parent_id'] == 0) { $nestedCategories[$id] = $category; } else { $categories[$category['parent_id']]['children'][$id] = $category; } } print_r($nestedCategories);
上記の 3 つの方法により、ループ クエリのサブカテゴリを効率的に実装できます。プロジェクトのニーズとデータ構造に合った方法を選択すると、コード効率が向上し、データベース クエリの数が減り、プログラムのパフォーマンスが最適化されます。上記の内容がお役に立てば幸いです。
以上がPHP でループ クエリのサブカテゴリを効率的に実装するいくつかの方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。