PHP递归函数没有返回预期

时间:2015-09-29 21:30:13

标签: 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++;
        hasMoreParent($parent_id,$i);
    }
        return $i;
}

并且,如果$ i大于0,它总是返回1而不是2或3 .. 如何让它返回其他数字?

1 个答案:

答案 0 :(得分:0)

为了实现递归,您缺少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;
}