PHP递归函数未返回预期值
我有以下代码:PHP递归函数未返回预期值,php,Php,我有以下代码: use app\models\Kategorije; function hasMoreParent($id,$i = 0){ $model = new Kategorije(); $parent_id = $model::find()->where('id = :id',[':id' => $id])->one()->parent_id; if ($parent_id > 1) { $i++;
use app\models\Kategorije;
function hasMoreParent($id,$i = 0){
$model = new Kategorije();
$parent_id = $model::find()->where('id = :id',[':id' => $id])->one()->parent_id;
if ($parent_id > 1) {
$i++;
hasMoreParent($parent_id,$i);
}
return $i;
}
如果$i大于0,它总是返回1,而不是2或3。。
如何返回这些其他数字?为了实现递归,您缺少return关键字,否则将执行函数
hasMoreParent
,但流将继续并到达return$I代码>语句
use app\models\Kategorije;
function hasMoreParent($id, $i = 0) {
$model = new Kategorije();
$parent_id = $model::find()->where('id = :id', [':id' = > $id])->one()->parent_id;
if ($parent_id > 1) {
$i++;
return hasMoreParent($parent_id, $i);
}
return $i;
}
为了实现递归,您缺少return关键字,否则将执行函数hasMoreParent
,但流将继续并到达return$i代码>语句
use app\models\Kategorije;
function hasMoreParent($id, $i = 0) {
$model = new Kategorije();
$parent_id = $model::find()->where('id = :id', [':id' = > $id])->one()->parent_id;
if ($parent_id > 1) {
$i++;
return hasMoreParent($parent_id, $i);
}
return $i;
}
您永远不会捕获递归调用的返回值,因此在顶层,您只会得到第一个调用的返回值。您可能希望改为$i+=hasMoreParent(…)
。您可以编写@MarcB示例吗?您永远不会捕获递归调用的返回值,因此在顶层,您只能得到第一个调用的返回值。你可能想要$i+=hasMoreParent(…)
来代替。你能写一个例子@MarcB吗?先生,你刚刚救了我的命!谢谢!没问题!很高兴帮忙:)先生,你刚刚救了我的命!谢谢!没问题!很乐意帮忙:)