动态处理多级类别结构

时间:2013-12-06 06:54:59

标签: php mysql hierarchical-data

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

使用表名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以三维数组结构编写的,但它有点困惑,占用了更多的CPU时间。

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

1 个答案:

答案 0 :(得分:2)

尝试以下代码

    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;
    }

在结果中,我们可以使用is_array()函数

检查子类别级别