目前正在处理与商家信息相关的项目。我需要一些帮助来处理类别结构。
使用表名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。
答案 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()函数
检查子类别级别