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