Почему не работает знак вычитания в цикле while в php?

<?php
$hp = 0;

while($hp < 50) {
$flip = rand(0,2);
if ($flip == 1) {
echo "<p>X-Ray</p>";
$hp += 15;
} elseif ($flip == 2) {
echo "<p>Special Move</p>";
$hp += 10;

} else {
echo "<p>Punch</p>";
$hp += 5;
}
echo "<p>Total so far: $hp</p>";
echo "</br>";
}
?>

Это код PHP. Когда я запускаю его, он работает нормально. Однако, когда я изменяю его на этот код ниже, это не так.

<?php
$hp = 50;

while($hp > 1) {
$flip = rand(0,2);
if ($flip == 1) {
echo "<p>X-Ray</p>";
$hp -= 15;
} elseif ($flip == 2) {
echo "<p>Special Move</p>";
$hp -= 10;

} else {
echo "<p>Punch</p>";
$hp -= 5;
}
echo "<p>Total so far: $hp</p>";
echo "</br>";
}
?>

Пожалуйста помоги. ИЗМЕНЕНИЯ, КОТОРЫЕ Я СДЕЛАН, ЯВЛЯЮТСЯ ВЫДЕЛЕННЫМИ

1

Решение

Вы никогда не создавали $hp правильно во второй версии:

50;

ничего не делает Он просто говорит php «здесь, есть 50», и php идет «гы, спасибо, хорошо, что угодно» и движется вперед. Тогда у вас есть

while($hp > 1) {

поскольку $hp не определено, это ноль, и код анализирует / выполняет как:

while($hp > 1) {
while(null > 1) {
while(0 > 1) {
FALSE -> exit loop
0

Другие решения

Вы никогда не создавали $ hp правильно во второй версии:

50;

Если вы измените его на $ hp = 50;

0