<?php
$efFect=0;
$find='is';
$find_len=strlen($find);
$string22 ='this is space is function';
while ($str_position =strpos($string22,$find,$effect)){
echo $find.'the postion in '. $str_position.'<br>';
$efFect = $str_position + $find_len ;
}
?>
回答
0是一个虚假值。你应该通过检查strpos是否返回false来使你的检查更可靠。
<?php
$effect=0; // not $efFect as variables names are case sensitive in PHP
$find='is';
$find_len=strlen($find);
$string22 ='this is space is function';
while (($str_position = strpos($string22, $find, $effect)) !== False){
echo $find.'the postion in '. $str_position.'<br>';
$effect = $str_position + $find_len ;
}
?>
从文档:
返回将针存在相对于干草堆字符串的开头(独立的偏移)的位置。另请注意,字符串位置从0开始,而不是1.
如果未找到针,则返回FALSE。
有人提到你的代码创建了一个无限循环,但事实并非如此。 strpos
接受offset
作为您正确使用的第三个参数。在每次迭代时,偏移量都会增加,这样新的搜索将从最后找到的结果串结束的位置开始,从而避免无限循环。
为什么downvote?原因? –
谢谢你所有的工作 –
我改变$效果抵消 –
- 1. Arduino代码 - while(0)有什么用?
- 2. 为什么不执行此jQuery代码?
- 3. 为什么不执行此代码?
- 4. Javascript为什么不执行此代码?
- 5. 为什么不执行此代码?
- 6. 为什么我的代码库执行'make -j 0'
- 7. 为什么执行此代码?
- 8. 这段代码为什么执行?
- 9. 为什么代码被执行两次?
- 10. 执行什么代码
- 11. 为什么while循环从未执行?
- 12. 为什么我的do-while“do”行执行两次之前“while”
- 13. 脚本不执行代码行 - 为什么?
- 14. 为什么Response.Redirect不执行下一行代码?
- 15. 为什么某些代码行在循环后不能执行?
- 16. while循环执行两行代码
- 17. Linux bash代码不能在执行while循环中执行
- 18. 为什么线程在执行代码时被阻塞“while(Thread.activeCount()> 1)”?
- 19. 为什么这不起作用?不执行代码?
- 20. 为什么此代码打印出“0”
- 21. 为什么这段代码打印0
- 22. 为什么此代码输出“0”?
- 23. 什么是代码页0?
- 24. Java中while(0)或while(1)的替代方法是什么?
- 25. 为什么我的表单提交代码不能执行?
- 26. 为什么执行Java代码unicode不显示
- 27. 为什么JavaScript代码不会每次都执行?
- 28. 为什么我的代码不执行break语句?
- 29. 为什么控制流程不遵循代码执行顺序?
- 30. 为什么Javascript不能按顺序执行代码?
您能否让代码更清洁?你想达到什么目的? –
问题是什么?你会得到什么结果?说明? – Yarimi
您在这里创建一个无限循环 –