# Koenig (15.12.2014 / 12:55)а еще лучше continue;
Garjs, оборвать цикл можно через break
# Koenig (15.12.2014 / 12:55)а еще лучше continue;
Garjs, оборвать цикл можно через break
Тему создавать новую не стал, так как вопрос у меня тоже по циклам.
Есть код, который работает верно. Тоесть цикл длится до тех пор, пока переменная $count достигнет значения 12.
$count = 1;
while ($count <= 12) {
echo 'число ' . $count . ' умноженное на 12 равно ' . $count * 12 . '<br />';
$count++;
}число 1 умноженное на 12 равно 12
число 2 умноженное на 12 равно 24
число 3 умноженное на 12 равно 36
число 4 умноженное на 12 равно 48
число 5 умноженное на 12 равно 60
число 6 умноженное на 12 равно 72
число 7 умноженное на 12 равно 84
число 8 умноженное на 12 равно 96
число 9 умноженное на 12 равно 108
число 10 умноженное на 12 равно 120
число 11 умноженное на 12 равно 132
число 12 умноженное на 12 равно 144
$count = 0;
while ($count++ <= 12) {
echo 'число ' . $count . ' умноженное на 12 равно ' . $count * 12 . '<br />';
}число 1 умноженное на 12 равно 12
число 2 умноженное на 12 равно 24
число 3 умноженное на 12 равно 36
число 4 умноженное на 12 равно 48
число 5 умноженное на 12 равно 60
число 6 умноженное на 12 равно 72
число 7 умноженное на 12 равно 84
число 8 умноженное на 12 равно 96
число 9 умноженное на 12 равно 108
число 10 умноженное на 12 равно 120
число 11 умноженное на 12 равно 132
число 12 умноженное на 12 равно 144
число 13 умноженное на 12 равно 156
Str@nnik, Потому что:
[~] >>> php -r '$count = 0; while($count <= 12){ echo $count, "\n"; $count++;}'
0
1
2
3
4
5
6
7
8
9
10
11
12
[~] >>> php -r '$count = 0; while($count <= 12){$count++; echo $count, "\n";}'
1
2
3
4
5
6
7
8
9
10
11
12
13
[~] >>> reaper, А, понял. Спасибо
Str@nnik, в первом варианте у тебя сразу проверяется условие, если оно TRUE выполняется тело цикла, выводится значение переменной и только потом увеличивается. Во-втором случае у тебя проверяется условие цикла, а потом выполняется постфиксный инкремент переменной.
Тоже самое ты получил бы если бы в первом варианте увеличивал переменную перед выводом. В общем измени постфиксный инкремент на префиксный и будет 12 итераций а не 13 - ++$count.
П.С.
Хотя всё же во втором случае сразу выполняется постфиксный инкремент переменной, но так как он постфиксный, он возвращает значение $count до изменения. Т.Е. проверятся с $count 0, а выводится уже 1. В общем главное что ты понял почему так и как с этим бороться. Гг
ValekS, Блин, впервые слышу что инкрименты могут быть постфиксные и префиксные, гг
П.С. Я то понял алгоритм работы в обеих случаях, ведь сам же проверял) просто не думал что будут баги с $count++/++$count ![]()
Str@nnik, вот тут очень хорошо рассказано и показано: http://www.php.su/learnphp/operators/?id
ValekS, Спасибо, почитаю ![]()
# Jahak (16.12.2014 / 09:28)Чем это лучше? break; и continue; - это разные конструкции. Посмотри на примере, как они работают
а еще лучше continue;
$x = 0;
while ($x++ < 10) {
if ($x == 5) break;
echo '<b>Итерация '. $x .'</b><br />';
}$x = 0;
while ($x++ < 10) {
if ($x == 5) continue;
echo '<b>Итерация '. $x .'</b><br />';
}ДоХтор, Знаю, просто не выспался тогда, плохо соображал, а исправить или удалить, возможности небыло когда понял, что написал неверно ![]()