Php for循环问题

时间:2014-08-25 11:09:20

标签: php

您好我正在学习php并尝试使用此代码执行for循环:

for($x=1; $x<=20; $x++){
    echo $x;
    $x = $x + 3; //5    
    echo "<br/>";
}

它的产生

 1
 5
 9
 13
 14

但我希望它应该......

1 
5
10
15
20

4 个答案:

答案 0 :(得分:4)

for ($x = 0; $x <= 20; $x += 5) {
    echo ($x == 0 ? 1 : $x), '<br>';
}

或者:

foreach (range(0, 20, 5) as $x) {
    echo ($x == 0 ? 1 : $x), '<br>';
}

你不能在没有1个额外条件的情况下产生序列,因为delta在第一步中有所不同:

 1  + 4 ...
 5  + 5
10  + 5
15  + 5
20  + 5

答案 1 :(得分:1)

有多个解决方案。

一个是:

for($x=1; $x<=20; $x++){
    if(!($x % 5) || $x==1)
        echo $x . "<br />";    
}

Explination

%是模运算符。它返回了决策休息。

让我们说$x是3而不是3 % 5会返回3,因为结果3/5 = 0 rest 3

如果$x为10,则返回0. 10/5 = 2 rest 0

在if语句中我使用! - 不是运算符。这会扭转结果。

因为if将{1}(一个或多个)作为true而0-(零和更少)作为false

所以3的其余部分将是positiv(true)但在这种情况下我希望它是假的。所以我用!

转向了真/假

% - Modulo

R - 休息

1 % 5 = 0 R 1  // would say true to if
2 % 5 = 0 R 2  // would say true to if
3 % 5 = 0 R 3  // would say true to if
4 % 5 = 0 R 4  // would say true to if
5 % 5 = 1 R 0  // would say false to if
6 % 5 = 1 R 1  // would say true to if

and so on...

答案 2 :(得分:0)

试试这个。

    $x = 1;

for ($j = 1; $j <= 20; $j++) {

echo $x, "<br/>";
if ($x == 1) {
    $x = $x + 4;
} else {

    $x = $x + 5;
   if($x > 20){break;}
}
}

如果这个答案对你有用,请标出答案。

答案 3 :(得分:0)

试试这个:

for($x=1; $x<=20; $x++) {
    if($x%5==0 || $x==1) {
        echo $x;
        echo "<br>";
    }
}