2013-08-20 5 views
-1

Я хочу знать, как изменять значение переменной каждый раз во время цикла.Изменение значения переменной во время цикла

Пожалуйста, объясните мне, что я делаю неправильно в нижнем кодировании.

$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 
+3

Почему вы отметили так много языков? – Ian

+2

use '$ amount = $ amount - 50' –

+2

' $ amount - = 50' – elclanrs

ответ

0

Вы не изменяете в amount в цикле, поэтому вы всегда получаете результат в 450 форме это утверждение:

$a = $amount - 50; 

, который оценивает все время as $ a = 500 - 50 = 450

Изменить свой код как:

$amount = 500; 

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

} 
+1

Немного уродливее, чем я надеялся, но +1 за то, что он первым объяснил проблему, а не просто сказал OP, что набирать. : P – cHao

+0

@cHao Я полностью согласен с уродливой частью :-) –

0

Должно быть

$amount = 500; 

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

Попробуйте

$a = $amount - 50; 
$amount = $a; 
echo $a . "<br>"; 

вместо

$a = $amount - 50; 
echo $a . "<br>"; 
-2
$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 
+0

'440 - 50 = 300'? : | – bystwn22

+0

@ bystwn22 Привет, стойте. Это опечатка –

-1

Juned уже объяснить, что происходит, я отправляю немного меньше кода версии

$amount = 500; 

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

OP хочет 450 400 350 300 250 200 150 100 50, а не -50 (на что ответит ваш ответ). Downvoted. Тест перед публикацией. –

+0

Его еще меньше 'while ($ amount> 0) {echo ($ a = ($ amount - = 50))."
"; } ': \ – bystwn22

+0

@ bystwn22 я не знаю, почему вы положили' a' там – DevZer0

-1

Вы должны изменить значение $ суммы внутри цикла до тех пор, пока оно не будет инициализировано

$amount = 500; 

while ($amount > 0) { 
$amount = $amount - 50; 
echo $amount . " "; 
} 

Теперь вы получите следующий результат, как вы хотите

450 400 350 300 250 200..... 
1

Некоторые из ответов здесь упоминали, как получить ваш while цикл, чтобы работать правильно. Так вот, вы знаете, что есть лучший способ.

while - это структура управления нижнего уровня, и это нормально, когда вам нужна гибкость. Например, это хорошо для циклов, где вы не знаете количество итераций заранее.

Здесь, однако, вы уже знаете начальную и конечную точки. Первое число, которое вы хотите, - 450, последнее - 50, и каждое число на 50 меньше, чем раньше. forсделано для случаев, подобных этому.

for ($amount=450; $amount>=50; $amount-=50) { 
    echo "{$amount}<br>"; 
} 

Это также более самодостаточным, и немного легче получить права, так как весь код, который изменяет переменную цикла в одном месте.

Смежные вопросы