鍍金池/ 問答/PHP  C++/ 關于PHP簡單遞歸查詢問題

關于PHP簡單遞歸查詢問題

public function randRateCode()
    {
        $rate = randpw(); //隨機生成一個字符串
        $rs = $this->Agent->where("rate='".$rate."'")->find();
        //查詢這個字符串在數(shù)據(jù)庫中是否純在
        if($rs){
            //如果存在
            $rate = $this->randRateCode();
        }
        return $rate;
    }

代碼如上,我隨機生成一個字符串,然后去數(shù)據(jù)庫匹配,如果匹配到,則遞歸該方法,最后返回這個字符串

我的問題是

我最終return的值,是合法的(數(shù)據(jù)庫不存在的)還是不合法的(數(shù)據(jù)庫存在的),為什么!為什么!為什么!

我是這么理解的,最終 return 是合法的

因為當不合法的時候,return 保留執(zhí)行(沒有立即執(zhí)行),當合法的時候,立即執(zhí)行 return ,函數(shù)在return后立即終止,不會再去執(zhí)行之前未執(zhí)行的 return …

回答
編輯回答
不討囍

1.這種不需要用遞歸,用do-while就行
2.答案是合法的,但是你的理解是錯誤的

因為當不合法的時候,return 保留執(zhí)行(沒有立即執(zhí)行),當合法的時候,立即執(zhí)行 return ,函數(shù)在return后立即終止,不會再去執(zhí)行之前未執(zhí)行的 return …

return只會終止當前調用,不會終止父調用,所以return會一直執(zhí)行

2018年5月11日 14:58
編輯回答
黑與白

合法的啊, 會一層一層return回來

2017年8月6日 10:02