【问题标题】:Handling Multi level category structure dynamically动态处理多级类别结构
【发布时间】:2013-12-06 06:54:58
【问题描述】:

目前正在从事与商家信息相关的项目。我需要一些帮助来处理类别结构。

使用表名 Bus_CategoryTbl 来维护类别,使用的字段有 Cat_ID、Cat_Name、Cat_Slug、Cat_Level 等,其中 Cat_PID 将具有父类别的 Cat_ID。

这里是示例记录,

Cat_ID   Cat_name           Cat_Slug            Cat_PID
1        Web Design         web-design          0
2        PHP                php                 1
3        MYSQL              mysql               1
4        Hotels             hotels              0
5        5 Stars            5-stars             4
6        3 stars            3-stars             4
7        Le Meridian        le-meridian         5
8        St Laurn Suites    st-laurn-suites     5
9        Niraali Executive  niraali             6

Cat_PID 值为 0 表示一级父类。

以上是示例记录,上表有3个级别。例如:酒店 (Cat_ID: 4) -> 5 星 (Cat_ID: 5) -> St Laurn Suites (Cat_ID: 8)

如何使用 PHP/MySql 动态实现上述结果(未来可能会增加级别)?它不应该占用更多的 CPU 时间。当前代码是使用 foreach 以 3 维数组结构编写的,但它有点混乱,占用更多 CPU 时间。

你能帮我实现这个目标吗? TIA。

【问题讨论】:

标签: php mysql hierarchical-data


【解决方案1】:

试试下面的代码

    function Fname($parentId=0){
    $catgArray = array();
    $sql = mysql_query("SELECT * FROM Table Where Cat_PID=$parentId");
    $mainCatg = mysql_fetch_array($sql);
    foreach($mainCatg as $mc){
    array_push($catgArray , $mc);
     $subCatg = $this->Fname($mc->Cat_ID);
                if (count($subCatg ) > 0) {
                    array_push($catgArray , $subCatg );
                }
    }
return $catgArray;
    }

在 Result 中我们可以使用 is_array() 函数检查子类别级别

【讨论】:

    猜你喜欢
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-05
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多