Почему пост инкремент и предварительный инкремент здесь равны?

Когда я пытаюсь использовать приведенный ниже код как постинкремент или преинкремент $ j, результат всегда одинаков. Ты знаешь почему? Пожалуйста, скажите мне. Спасибо.

<?php
$j = 1;
while( $j < 20 ) {
$j++;
echo "1 * $j is equal to $j <br/>";
}
?>

-1

Решение

В этом коде:

$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 является частью большего выражения, где порядок приращения имеет значение.

2

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

В этом коде $ j = 1 мы инициализируем, затем проверяем условие, удовлетворяющее условию, затем увеличиваем значение $ j = 2, теперь это первоначальное значение $ j равно 2. Следовательно, в эхо-выражении 1 * $ j равно $ j означает 1 * 2 равно 2.
Таким образом, вся итерация будет выполняться до конца цикла.
Как будто предварительное увеличение, которое мы используем в одном и том же случае, произойдет сначала приращения значения, а затем по исходному значению рассчитать тот же результат

0

По вопросам рекламы [email protected]