为了账号安全,请及时绑定邮箱和手机立即绑定

关于PHP简单递归查询问题

关于PHP简单递归查询问题

PHP
慕标琳琳 2019-03-04 14:38:11
public function randRateCode() { $rate = randpw(); //随机生成一个字符串 $rs = $this->Agent->where("rate='".$rate."'")->find(); //查询这个字符串在数据库中是否纯在 if($rs){ //如果存在 $rate = $this->randRateCode(); } return $rate; } 代码如上,我随机生成一个字符串,然后去数据库匹配,如果匹配到,则递归该方法,最后返回这个字符串 我的问题是 我最终return的值,是合法的(数据库不存在的)还是不合法的(数据库存在的),为什么!为什么!为什么! 我是这么理解的,最终 return 是合法的 因为当不合法的时候,return 保留执行(没有立即执行),当合法的时候,立即执行 return ,函数在return后立即终止,不会再去执行之前未执行的 return …
查看完整描述

2 回答

?
www说

TA贡献1775条经验 获得超8个赞

1.这种不需要用递归,用do-while就行
2.答案是合法的,但是你的理解是错误的

因为当不合法的时候,return 保留执行(没有立即执行),当合法的时候,立即执行 return ,函数在return后立即终止,不会再去执行之前未执行的 return …

return只会终止当前调用,不会终止父调用,所以return会一直执行

查看完整回答
反对 回复 2019-03-18
?
SMILET

TA贡献1796条经验 获得超4个赞

合法的啊, 会一层一层return回来

查看完整回答
反对 回复 2019-03-18
  • 2 回答
  • 0 关注
  • 348 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信