我想知道如何在每次循环时修改变量值。
请指导我在下面的编码中做错了什么。
$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
,因此您总是从以下语句中得到450的结果:
$a = $amount - 50;
其评估所有时间为$a=500-50=450
更改您的代码如下:
$amount = 500;
while ($amount > 0) {
$a = $amount - 50;
echo $a . "<br>";
$amount = $amount - 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>";
}
试试这个
$a = $amount - 50;
$amount = $a;
echo $a . "<br>";
而不是
$a = $amount - 50;
echo $a . "<br>";
您必须在循环中更改$amount的值直到它保持与初始化相同的值
$amount = 500;
while ($amount > 0) {
$amount = $amount - 50;
echo $amount . " ";
}
现在您收到以下结果,因为您希望
450 400 350 300 250 200.....
Juned已经解释了发生了什么,我发布了一个稍小的代码版本
$amount = 500;
while ($amount > 0) {
echo ($amount -= 50) . "<br />";
}
$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