下面是一個表結構,我有:PHP遞歸幫助需要創建一個樹形結構
CREATE TABLE menu (
menuid int(11) NOT NULL AUTO_INCREMENT,
menuname varchar(100) NOT NULL DEFAULT '',
menulink varchar(100) NOT NULL DEFAULT '',
menuparentId int(11) NOT NULL DEFAULT '0',
menuhasChild smallint(1) NOT NULL DEFAULT '0',
menustatus smallint(1) NOT NULL DEFAULT '1',
menuorder int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (menuid)
)
我使用遞歸函數來創建這樣的菜單結構和失敗在這裏:
function categoriesTree($id=0){
$s = "SELECT * FROM menu WHERE menuparentId = '".$id."'
ORDER BY menuorder, menuid ";
$rid = $this->db->query($s)->result_array();
$treeArray = array();
foreach($rid as $row){
$treeArray[$row['menuid']] = $row;
if($row['menuhasChild']==1){
$treeArray[$row['menuid']] = $this->categoriesTree(); //results in Fatal error: Maximum function nesting level of '100' reached, aborting!
}
}
retrun $treeArray;
}
此方法是CodeIgniter模型類中模型的一部分。有沒有更好的方法來創建樹?
我想你必須在函數調用中添加id作爲參數:$ this-> categoriesTree($ row ['menuid'])我想。否則,您每次都調用該函數完全相同。 – superbly 2011-05-11 08:37:07
德哦,感謝您指出,發佈這個答案,我會選擇它,我怎麼會錯過它?我需要咖啡 – Kumar 2011-05-11 08:57:08
有時也會發生在我身上:D – superbly 2011-05-11 09:17:08