<?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
您在這裏創建一個無限循環 –