帮忙看下怎么会返回null
本帖最后由 snowlove 于 2013-06-17 18:27:34 编辑
<?php<br />function newtripos($str,$findstr,$count,$off=0){<br /> $pos=stripos($str,$findstr,$off);<br /> $count--;<br /> if($count>0 && $pos!=false){<br /> $pos=newtripos($str,$findstr,$count,$pos+1);<br /> }else{<br /> var_dump($pos);<br /> return $pos;<br /> }<br />}<br />$a="456123456455654466";<br />$b=newtripos($a,'6',4);<br />var_dump($b);<br />?>
执行后显示$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){<br /> $pos=stripos($str,$findstr,$off);<br /> $count--;<br /> if($count>0 &<b>/本文来源gao@!dai!ma.com搞$$代^@码5网@</b><strong>搞代gaodaima码</strong>& $pos!=false){<br /> $pos=newtripos($str,$findstr,$count,$pos+1);<br /> }<br /> return $pos;<br />}
——解决方案——————–
差别大多了,因为没有去掉else时,相当于
<br /><br /><?php<br /><br /> if($count>0 && $pos!=false){<br /> $pos=newtripos($str,$findstr,$count,$pos+1);<br /> return null;<br /> }else{<br /> var_dump($pos);<br /> return $pos;<br /> }<br />}<br />?> <br />
而去掉else以后,则是
<br /><br /><?php<br /><br /> if($count>0 && $pos!=false){<br /> $pos=newtripos($str,$findstr,$count,$pos+1);<br /> return $pos;<br /> }else{<br /> var_dump($pos);<br /> return $pos;<br /> }<br />}<br />?> <br />
搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:帮忙看下如何会返回null
转载请注明原文链接:帮忙看下如何会返回null
