Web 開発の分野では、分類クエリは非常に一般的な要件であり、電子商取引プラットフォームでもコンテンツ管理システムでも、分類に基づいたデータ表示方法があります。分類層の数が増加するにつれて、サブカテゴリをクエリするタスクはますます複雑になります。この記事では、開発者がカテゴリ階層を簡単に管理できるように、サブカテゴリに対する効率的な PHP ループ クエリ方法を紹介します。
まず、機密データを取得する必要があります。ここでは例として単純なデータベース テーブルを取り上げます。このテーブルの名前は category であり、次のフィールドがあるとします:
| id | name | parent_id |
|---|---|---|
| 1 | 家庭用電化製品 | 0 |
| 電子機器 | 0 | |
| テレビ | 1 | |
| 冷蔵庫 | 1 | |
| パソコン | 2 | |
| Laptop | 2 |
function get_children_categories($parent_id) {
// <code to query categories from database by parent_id>
return $categories;
}上記のコードでは、データベースからすべてのサブカテゴリをクエリし、今後の使用のためにそれらを返します。
function get_children_categories($parent_id) {
$categories = array();
// <code to query categories from database by parent_id>
foreach($results as $result) {
$category = array();
$category['id'] = $result['id'];
$category['name'] = $result['name'];
$children = get_children_categories($result['id']);
if (!empty($children)) {
$category['children'] = $children;
}
$categories[] = $category;
}
return $categories;
}上記のコードは、各カテゴリのサブカテゴリをレイヤーごとに再帰的にクエリし、結果セットに追加することで、完全な分類階層を構築します。このプロセスでは、PHP の foreach ループを使用し、独自のメソッドを再帰的に呼び出します。
function print_categories($categories) {
echo "<ul>";
foreach($categories as $category) {
echo "<li>" . $category['name'] . "</li>";
if (!empty($category['children'])) {
print_categories($category['children']);
}
}
echo "</ul>";
}ここでは、各カテゴリを走査して、その名前を出力します。カテゴリにサブカテゴリが含まれる場合は、独自のメソッドを再帰的に呼び出して、すべてのサブカテゴリを出力します。
$memcached = new Memcached();
$memcached->addServer('localhost', 11211);
$categories = $memcached->get('categories:1');
if (!$categories) {
$categories = get_children_categories(1);
$memcached->set('categories:1', $categories);
}
print_categories($categories);上記のコードでは、最初に memcached クライアント接続を確立し、分類結果を「categories:1」という名前のキャッシュ キーにキャッシュしました。後続のクエリでは、クエリ関数を再実行することなく、キャッシュから直接結果を取得できます。このアプローチにより、特に大規模なカテゴリ データの場合、クエリのパフォーマンスが大幅に向上します。
以上が【概要共有】効率的なPHPループクエリサブカテゴリー手法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。