Самое простое решение: замените "+" на "-" . Это приведет к завершению цикла. Как это:
$loop_Until = 10;
while($i < $loop_Until)
{
// do some code here
$loop_Until = $loop_Until - 1;
}
Позвольте мне объяснить, предложить немного лучшее решение и дать вам несколько альтернатив.
Если мы предположим, что $ i начинается меньше, чем $ loop_Until, то добавление 1 к $ loop_Until со строкой $loop_Until = $loop_Until + 1;
никогда не приведет к тому, что $ i будет равно или больше, чем $ loop_Until.
Вы должны либо вычесть из $ loop_Until, либо добавить к $ i.
Вычесть 1 из переменной можно быстро, выполнив, --$variable
.
Добавление 1 к переменной можно быстро выполнить, набрав ++$variable
, поэтому вы должны иметь:
$loop_Until = 10;
while($i < $loop_Until)
{
// do some code here
--$loop_Until;
}
Конечно, $ loop_Until звучит как то, что вы, возможно, захотите установить один раз, а затем оставить его неизменным. В этом случае вы можете установить $ i и увеличить его. Поэтому сначала установите для $ i все, что вы хотите (меньше, чем $ loop_Until, если вы хотите, чтобы цикл while выполнялся хотя бы один раз), а затем:
$loop_Until = 10;
while($i < $loop_Until)
{
// do some code here
++$i;
}
Кстати, ++ $ i быстрее, чем $ i ++
Как упоминал Lizard, цикл for отлично подходит для этого. Два эквивалента для циклов для двух разделов кода выше
for($loop_Until = 10; $i < $loop_Until; --$loop_Until)
{
// do some code here
}
и
for($loop_Until = 10; $i < $loop_Until; ++i)
{
// do some code here
}
Просто убедитесь, что вы проверите, что ваше состояние в конечном итоге произойдет с несколькими цифрами на листе бумаги или в вашей голове.
Наконец, какое из этих решений вы выберете, будет зависеть от того, хотите ли вы, чтобы $ i или $ loop_Until оставались без изменений.
Если у вас есть несколько циклов, и вы хотите выполнять их все одинаковое количество раз, вероятно, будет хорошей идеей оставить $ loop_Until нетронутым и сбросить $ i в начале каждого цикла.