Php 循环时更改中的变量值

Php 循环时更改中的变量值,php,Php,我想知道如何在每次循环时修改变量值 请指导我在下面的编码中做错了什么 $amount = 500; while ($amount > 0) { $a = $amount - 50; echo $a . "<br>"; } 但我希望: 450 400 350 300 250 200 150 100 50 应该是 $amount = 500; while ($amount > 0) { $amount = $amount - 50; echo $amount . "&

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

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

$amount = 500;

while ($amount > 0) {
$a = $amount - 50;
echo $a . "<br>";
}
但我希望:

450 400 350 300 250 200 150 100 50
应该是

$amount = 500;

while ($amount > 0) {
$amount = $amount - 50;
echo $amount . "<br>";
}
$amount=500;
而($amount>0){
$amount=$amount-50;
回显$amount.“
”; }
试试这个

 $a = $amount - 50;
 $amount = $a;
 echo $a . "<br>";
$a=$amount-50;
$amount=$a;
回声一美元。“
”;
而不是

$a = $amount - 50;
echo $a . "<br>";
$a=$amount-50;
回声一美元。“
”;
您没有更改循环中的
金额,因此您总是从以下语句中得到结果:

$a = $amount - 50; 
它始终计算为$a=500-50=450

按如下方式更改代码:

$amount = 500;

while ($amount > 0) {
$a = $amount - 50;
echo $a . "<br>";
$amount  = $amount - 50;

}
$amount=500;
而($amount>0){
$a=$amount-50;
回声$a.“
”; $amount=$amount-50; }
朱纳德已经解释了发生了什么,我发布了一个稍微小一点的代码版本

$amount = 500;

while ($amount > 0) {
   echo ($amount -= 50) . "<br />";
}
$amount=500;
而($amount>0){
回声($amount-=50)。“
”; }
您已经更改了循环中$amount的值 直到它保持与初始化时相同的值

$amount = 500;

while ($amount > 0) {
$amount = $amount - 50;
echo $amount . " ";
}   
现在,您可以按照自己的意愿收到以下结果

450 400 350 300 250 200.....

这里的一些答案提到了如何使
while
循环正常工作。不过,让你知道,还有更好的办法

while
是一种较低级别的控制结构,在需要灵活性时可以使用。例如,对于您事先不知道迭代次数的循环,这是很好的

不过,在这里,您已经知道了起点和终点。你要的第一个数字是450,最后一个是50,每个数字比之前的数字少50
for
适用于此类情况

for ($amount=450; $amount>=50; $amount-=50) {
    echo "{$amount}<br>";
}
对于($amount=450;$amount>=50;$amount-=50){
回显“{$amount}
”; }

由于修改循环变量的所有代码都在一个地方,因此它更独立,也更容易获得正确的结果。

为什么要标记这么多语言SSS?使用
$amount=$amount-50
您不会减少$amount值,因此它将始终是500->这里是一个无限循环
$amount-=50;echo美元金额仅供参考:这里有一个循环,您已经知道循环的起点和终点。
for
循环更适合这里<代码>用于($amount=450;$amount>=50;$amount-=50){echo“{$amount}
”;}
,例如…它更清楚地说明了意图<代码>而
更原始,应该是第二选择;如果你在一组未知的(-til runtime)值上进行迭代,并且/或者不确定循环何时结束,这更合适——这两种情况对于其他控制结构来说都是相当尴尬的。比我希望的要难看一些,但是+1是第一个真正解释问题的人,而不仅仅是告诉OP键入什么:P@cHao我完全同意丑陋的部分:-)OP想要450 400 350 300 250 200 150 100 50,而不是-50(你的答案返回)。被否决。发帖前测试。它甚至更小
while($amount>0){echo($a=($amount-=50))。“
”;}
:\@bystwn22我不知道你为什么把一个
a
放在那里,那是不需要的,但是看到问题了,没有
a
它真的很小:P@bystwn22嘿,别再喝酒了。这是一个打字错误
$amount = 500;

while ($amount > 0) {
$amount = $amount - 50;
echo $amount . " ";
}   
450 400 350 300 250 200.....
for ($amount=450; $amount>=50; $amount-=50) {
    echo "{$amount}<br>";
}