我不知道這裏發生了什麼,我測試了這個代碼在本地主機,但現在,我已經嘗試去住,我收到此錯誤信息:遞歸菜單導致致命的錯誤:讓內存大小耗盡
致命錯誤:允許內存大小67108864字節耗盡(試圖分配261900字節)在... /函數/ tree.php在線24
我猜測代碼導致某種無限遞歸,但我是一個有點困惑,因爲它在本地主機上運行良好。我花了幾天的時間試圖讓它按照我想要的方式運作,我不願在沒有方向的情況下改變事情。任何想法可能會導致此錯誤和/或如何解決它?
<?php
function hasChild($parent_id)
{
$sql = "SELECT COUNT(*) as count FROM categories WHERE parent = '" . $parent_id . "'";
$qry = mysql_query($sql);
$rs = mysql_fetch_array($qry);
return $rs['count'];
}
function CategoryTree($list,$parent,$append)
{
$list = '<li>'.'<a href="inventory.php?cid=' . $parent['id'] . '&cname=' . $parent['cname'] . '">' . $parent['cname'] . '</a>'.'</li>';
if (hasChild($parent['id'])) // check if the id has a child
{
$append++;
$list .= "<ul class='child child".$append."'>";
$sql = "SELECT * FROM categories WHERE parent = '" . $parent['id'] . "'";
$qry = mysql_query($sql);
$child = mysql_fetch_array($qry);
do{
$list .= CategoryTree($list,$child,$append); //this is line 24
}while($child = mysql_fetch_array($qry));
$list .= "</ul>";
}
return $list;
}
function CategoryList()
{
$list = "";
$sql = "SELECT * FROM categories WHERE (parent = 0 OR parent IS NULL)";
$qry = mysql_query($sql);
$parent = mysql_fetch_array($qry);
$mainlist = "<ul class='parent'>";
do{
$mainlist .= CategoryTree($list,$parent,$append = 0);
}while($parent = mysql_fetch_array($qry));
$list .= "</ul>";
return $mainlist;
}
?>
我仍然收到一條錯誤消息,但允許的大小更大,錯誤行現在在第21行,出於某種原因... 致命錯誤:134217728字節允許的內存大小(嘗試分配44個字節)in/functions /tree.php在線21 –
好吧,然後將它設置爲'-1'注意內存泄漏 – meda