您好我正在学习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
答案 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>";
}
}