Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 递归函数的行为异常_Php - Fatal编程技术网

Php 递归函数的行为异常

Php 递归函数的行为异常,php,Php,我有一个函数,根据父子id从数据库中检索结果。父子结构最多可以包含四个层次结构的“级别”,并且基于给定的场景,应该从给定的级别检索最深级别的结果 我有这个功能: static public function ThisFunction($iParentId, $aResult) { $aRows = ClassName::GetAllByParentId($iParentId); for($i = 0; $i < count($aRows); $i++) {

我有一个函数,根据父子id从数据库中检索结果。父子结构最多可以包含四个层次结构的“级别”,并且基于给定的场景,应该从给定的级别检索最深级别的结果

我有这个功能:

static public function ThisFunction($iParentId, $aResult) {

    $aRows = ClassName::GetAllByParentId($iParentId);

    for($i = 0; $i < count($aRows); $i++) { 

        $oRow = $aRows[$i];

        if($oRow->Level != 'deepest_level') {

            return ClassName::ThisFunction($oRow->Id, $aResult);
        } else { 

            $aResult[] = $oRow;
        }
    }

    return $aResult;
}
此数据集的级别较少,但仅用于演示


当我寻找最深的值时,我希望得到
DDD
EEE
。在我的情况下,我只得到
DDD
。另外,当我尝试合并结果时…

如果级别不是最深的,则立即从递归调用返回,而不处理循环中的其他元素

我猜你的意思是:

$aResult[] = ClassName::ThisFunction($oRow->Id, $aResult);

或者类似的东西。。从您的问题中无法判断结果应该是什么样子。

也许您想收集递归调用的结果

$aResult[] = ClassName::ThisFunction($oRow->Id, $aResult);

您从不合并嵌套调用的结果,只返回它们。试着改变

return ClassName::ThisFunction($oRow->Id, $aResult);


有趣的看起来你正在建立一个族谱,就像我刚才所做的。它不是一个族谱,它是一个基于位置的树(国家、州、城市等等)。但是对于可读性,我刚刚提到了基本点:)谢谢你的回复,很抱歉反应太晚。问题已经解决了+感谢您的回复,很抱歉反应太晚。问题已经解决了+感谢您的回复,很抱歉反应太晚。问题已经用你的建议解决了+1.
return ClassName::ThisFunction($oRow->Id, $aResult);
$aResult = array_merge($aResult, ClassName::ThisFunction($oRow->Id, $aResult));