需要一些帮助来确定PHP中递归调用的数量吗

需要一些帮助来确定PHP中递归调用的数量吗,php,recursion,Php,Recursion,我有一个,我认为相当简单的问题,但这让我有一段时间感到困扰。所以我想,也许我可以在这里得到一些帮助 由于递归函数总是有点棘手,有时对我来说有点不清楚,我一直在努力创建一个很好的工作解决方案来获取我的menudata 在我的一个类中,我有这个函数,它递归地给我所有菜单项 我想做的事情是确定在哪个递归级别检索某个对象,这样我就可以创建一个外观良好的HTML输出,其中包含嵌套级别的缩进 public function GetObjectList($parentID = 0, $objectlist =

我有一个,我认为相当简单的问题,但这让我有一段时间感到困扰。所以我想,也许我可以在这里得到一些帮助

由于递归函数总是有点棘手,有时对我来说有点不清楚,我一直在努力创建一个很好的工作解决方案来获取我的menudata

在我的一个类中,我有这个函数,它递归地给我所有菜单项

我想做的事情是确定在哪个递归级别检索某个对象,这样我就可以创建一个外观良好的HTML输出,其中包含嵌套级别的缩进

public function GetObjectList($parentID = 0, $objectlist = null)
{
    if(is_null($objectlist))
    {
        $objectlist = new ObjectList("Model_Navigation");   
    }           

    $query  = MySQL::Query("SELECT * FROM `Navigation` WHERE `WebsiteID` = ".SITE_ID. " AND `LanguageID` = ".LANG_ID." AND `ParentID` = ".$parentID);

    while($result = MySQL::FetchAssoc($query))
    {           
        $object = new Model_Navigation();

        $object->ID             = $result["ID"];
        $object->WebsiteID      = $result["WebsiteID"];
        $object->LanguageID     = $result["LanguageID"];
        $object->ParentID       = $result["ParentID"];
        $object->Name           = $result["Name"];
        $object->Page           = Model_Page::GetObjectByID($result["PageID"]);
        $object->ExternalURL    = $result["ExternalURL"];
        $object->Index          = $result["Index"];
        $object->Level          = [here lies my problem];
        $objectlist->Add($object);

        self::GetObjectList($object->ID, $objectlist);
    }

    return $objectlist;
}

为什么不在函数调用中添加一个存储调用数的参数呢。在第一次调用时,只需将其设为0,增加函数中的值,并在递归调用中使用它。

我已经尝试过了,但是当我这样做时,levelcount不匹配。谢谢,这很有效!我现在有点困惑。。。为什么$level+1起作用而$level++不起作用?尽管如此,在我看来,相同的…?@Ben Fransen:
$level++
是“后增量”,因此表达式返回的值在增量之前<代码>+$level可以工作。谢谢你解释汤姆!现在你提到它变得清晰了+1@Ben,你还记得我告诉过你,有时候爱因斯坦也忘记了能量的定义,就像你在这个“后增量”的例子中一样,我应该把你的怀疑称为家庭作业吗???不,从来没有。。因为每个人都有痛苦,有时。。。。。上帝保佑哈哈是的,我在你的帖子里看到了你对我的评论;)我猜是你;你说得对。
public function GetObjectList($parentID = 0, $objectlist = null, $level = 1)
{
    if(is_null($objectlist))
    {
        $objectlist = new ObjectList("Model_Navigation");   
    }           

    $query  = MySQL::Query("SELECT * FROM `Navigation` WHERE `WebsiteID` = ".SITE_ID. " AND `LanguageID` = ".LANG_ID." AND `ParentID` = ".$parentID);

    while($result = MySQL::FetchAssoc($query))
    {           
        $object = new Model_Navigation();

        $object->ID             = $result["ID"];
        $object->WebsiteID      = $result["WebsiteID"];
        $object->LanguageID     = $result["LanguageID"];
        $object->ParentID       = $result["ParentID"];
        $object->Name           = $result["Name"];
        $object->Page           = Model_Page::GetObjectByID($result["PageID"]);
        $object->ExternalURL    = $result["ExternalURL"];
        $object->Index          = $result["Index"];
        $object->Level          = $level;
        $objectlist->Add($object);

        self::GetObjectList($object->ID, $objectlist, $level+1);
    }

    return $objectlist;
}