用“while”获得不同的结果循环,请解释原因?

时间:2013-10-08 18:44:18

标签: php

初学者, 请向我解释不同答案的原因。

$string = "If you’re looking for a way";

$pos = 0;

while (($pos = strpos($string,"o",$pos))!== false) {
echo $pos."<br/>";
$pos++;
 }

[上述代码的结果]输出为:

4
13
14
21


$pos = 0;

$string = "If you’re looking for a way";
while ((strpos($string,"o",$pos))!== false) {
echo strpos($string,"o",$pos)."<br/>";
$pos++;

  }

[上述代码的结果]输出为:

4
4
4
4
4
13
13
13
13
13
13
13
13
13
14
21
21
21
21
21
21
21

1 个答案:

答案 0 :(得分:2)

$pos = strpos($string, "o", $pos)$pos设置为找到的项目的位置,然后$pos++将其递增。这将导致在当前的之后找到下一个匹配项。

仅使用$pos++意味着搜索开始的索引每次都会提前一个。