我想知道每次循环时如何修改变量值。
请指导我在下面的编码中做错了什么。
$amount = 500;
while ($amount > 0) {
$a = $amount - 50;
echo $a . "<br>";
}
我收到这个:
450 450 450 450 450 450 450 450 450
但我想要那个:
450 400 350 300 250 200 150 100 50
我想知道每次循环时如何修改变量值。
请指导我在下面的编码中做错了什么。
$amount = 500;
while ($amount > 0) {
$a = $amount - 50;
echo $a . "<br>";
}
我收到这个:
450 450 450 450 450 450 450 450 450
但我想要那个:
450 400 350 300 250 200 150 100 50
这里的一些答案提到了如何让你的while
循环正常工作。只是让你知道,不过,有一个更好的方法。
while
是一个较低级别的控制结构,当您需要灵活性时也可以。例如,它适用于您事先不知道迭代次数的循环。
但是,在这里,您已经知道起点和终点。你想要的第一个数字是 450,最后一个是 50,每个数字都比前一个数字少 50。 for
是为这样的情况而设计的。
for ($amount=450; $amount>=50; $amount-=50) {
echo "{$amount}<br>";
}
它也更加独立,并且更容易正确,因为修改循环变量的所有代码都在一个地方。
应该
$amount = 500;
while ($amount > 0) {
$amount = $amount - 50;
echo $amount . "<br>";
}
您没有更改amount
循环中的 the ,因此您总是从以下语句中获得 450 的结果:
$a = $amount - 50;
它始终评估为 $a = 500 - 50 = 450
像这样更改您的代码:
$amount = 500;
while ($amount > 0) {
$a = $amount - 50;
echo $a . "<br>";
$amount = $amount - 50;
}
试试这个
$a = $amount - 50;
$amount = $a;
echo $a . "<br>";
代替
$a = $amount - 50;
echo $a . "<br>";
Juned 已经解释了发生了什么,我发布了一个稍微小一点的代码版本
$amount = 500;
while ($amount > 0) {
echo ($amount -= 50) . "<br />";
}
您已经在循环内更改了 $amount 的值,直到它保持与初始化相同的值
$amount = 500;
while ($amount > 0) {
$amount = $amount - 50;
echo $amount . " ";
}
现在您会收到您想要的以下结果
450 400 350 300 250 200.....
$amount = 500; // You have assigned $amount = 500
while ($amount > 0) {
$a = $amount - 50;
echo $a . "<br>";
}
现在当 $amount > 0 这个循环运行。每次循环运行时,LHS 上都没有语句。那就是 $amount 没有被改变,但总是被引用。
要更改金额,您必须
$amount = $amount - 50; // 500 -50 = 450, next loop 450 - 50 = 400, next loop 400-50=350 and so on