首页 / PHP / 帮忙看下怎么会返回null
帮忙看下怎么会返回null
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了帮忙看下怎么会返回null,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1662字,纯文字阅读大概需要3分钟。
内容图文
![帮忙看下怎么会返回null](/upload/InfoBanner/zyjiaocheng/197/22677dca23324154bf4f6fa1909657c8.jpg)
0 && $pos!=false){ $pos=newtripos($str,$findstr,$count,$pos+1); }else{ var_dump($pos); return $pos; }}$a="456123456455654466";$b=newtripos($a,'6',4);var_dump($b);?>
执行后显示$b是null。而在函数返回前,执行的var_dump($pos),显示是int(16)。
为什么var_dump($b)会是null?
回复讨论(解决方案)
你使用了递归,return $pos; 在进入递归后会作用于 $pos=newtripos($str,$findstr,$count,$pos+1);
而你并没有在这个分支里对 $pos 作处理(也就是将结果返回到上一级递归)
我说的可能连我自己都不好理解,看代码:
function newtripos($str,$findstr,$count,$off=0){ $pos=stripos($str,$findstr,$off); $count--; if($count>0 && $pos!=false){ $pos=newtripos($str,$findstr,$count,$pos+1); } return $pos;}
你的代码没问题。
function newtripos($str,$findstr,$count,$off=0){
$pos=stripos($str,$findstr,$off);
$count--;
if($count>0 && $pos!=false){
$pos=newtripos($str,$findstr,$count,$pos+1);
}else{
var_dump($pos);//程序执行到这里可以正确的打出$pos的值。继续执行就应该结束函数,返回$pos
return $pos; //这里就应该返回$pos的值了。
}
}
$a="456123456455654466";
$b=newtripos($a,'6',4); //可是这里$b 怎么没接收到$pos,是个null
var_dump($b);
?>
把else体去掉,和没去掉有这么大差别?
差别大多了,因为没有去掉else时,相当于
0 && $pos!=false){ $pos=newtripos($str,$findstr,$count,$pos+1); return null; }else{ var_dump($pos); return $pos; }}?>
而去掉else以后,则是
0 && $pos!=false){ $pos=newtripos($str,$findstr,$count,$pos+1); return $pos; }else{ var_dump($pos); return $pos; }}?>
内容总结
以上是互联网集市为您收集整理的帮忙看下怎么会返回null全部内容,希望文章能够帮你解决帮忙看下怎么会返回null所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。