循环时更改中的变量值


Change Variable Value in While Looping

我想知道如何在每次循环时修改变量值。

请指导我在下面的编码中做错了什么。

$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