Когда я пытаюсь использовать приведенный ниже код как постинкремент или преинкремент $ j, результат всегда одинаков. Ты знаешь почему? Пожалуйста, скажите мне. Спасибо.
<?php
$j = 1;
while( $j < 20 ) {
$j++;
echo "1 * $j is equal to $j <br/>";
}
?>
В этом коде:
$j = 1;
while( $j < 20 ) {
$j++;
echo "1 * $j is equal to $j <br/>";
}
Неважно, пишешь ли ты $j++;
здесь или ++$j;
здесь, потому что $j++
на линии сам по себе. Это не часть другого выражения, которое будет до или после увеличения $j
, Когда это на линии само по себе $j++;
а также ++$j;
сделать то же самое. Спросите себя: «прирост $j
до чего? »или« приращение $j
после чего»?
Теперь, если вместо этого у вас было:
$j = 1;
while( $j++ < 20 ) {
echo "1 * $j is equal to $j <br/>";
}
$j
будет увеличен после его значение сравнивалось с 20. Этот цикл покажет значения $j
на выходе с 2 по 19.
Тогда как если бы вы написали
$j = 1;
while( ++$j < 20 ) {
echo "1 * $j is equal to $j <br/>";
}
Значение $j
будет увеличен до $j
был сравнен с 20. Этот цикл покажет значения $j
на выходе от 2 до 20.
Это потому что сейчас $j
является частью большего выражения, где порядок приращения имеет значение.
В этом коде $ j = 1 мы инициализируем, затем проверяем условие, удовлетворяющее условию, затем увеличиваем значение $ j = 2, теперь это первоначальное значение $ j равно 2. Следовательно, в эхо-выражении 1 * $ j равно $ j означает 1 * 2 равно 2.
Таким образом, вся итерация будет выполняться до конца цикла.
Как будто предварительное увеличение, которое мы используем в одном и том же случае, произойдет сначала приращения значения, а затем по исходному значению рассчитать тот же результат