無限階層分類の実現方法

PHP で階層構造を無限に作成するには再帰関数を使うことができます。以下は一例です。

// 定义一个函数来获取指定父级分类的子级分类
function getChildCategories($parentId, $categories) {
    $childCategories = array();
    
    foreach ($categories as $category) {
        if ($category['parent_id'] == $parentId) {
            $category['children'] = getChildCategories($category['id'], $categories);
            $childCategories[] = $category;
        }
    }
    
    return $childCategories;
}

// 从数据库中获取所有分类数据
// 这里使用一个简单的数组来模拟数据库查询结果
$categories = array(
    array('id' => 1, 'name' => '分类1', 'parent_id' => 0),
    array('id' => 2, 'name' => '分类2', 'parent_id' => 0),
    array('id' => 3, 'name' => '分类3', 'parent_id' => 1),
    array('id' => 4, 'name' => '分类4', 'parent_id' => 1),
    array('id' => 5, 'name' => '分类5', 'parent_id' => 2),
    array('id' => 6, 'name' => '分类6', 'parent_id' => 4),
);

// 获取顶级分类(父级分类为0)
$topLevelCategories = getChildCategories(0, $categories);

// 输出无限级分类
function printCategories($categories, $indent = 0) {
    foreach ($categories as $category) {
        echo str_repeat('&nbsp;', $indent * 4) . $category['name'] . "<br>";
        
        if (!empty($category['children'])) {
            printCategories($category['children'], $indent + 1);
        }
    }
}

printCategories($topLevelCategories);

このコードでは、ある特定の親カテゴリーの子カテゴリーを取得する getChildeCategories 関数が、再帰的にすべてのレイヤーの子を取得するのに利用されます。printCategories 関数は、無限階層のカテゴリーを出力するために利用され、階層関係を視覚的に表すためにインデントを使用します。最終的に printCategories 関数を呼び出すことで、最上位のカテゴリーを出力でき、無限階層のカテゴリー表示を実現できます。

bannerAds