Почему независимо от того какой инкремент употребляется в цикле for, результат получается один и тот же?

Пример 1:

<?php
$sum = 0; // при первом проходе запишется 1
$count = 0;
    for ($i= 1; $sum <= 1; ++$i) {
        $sum += $i;
        $count++;
    }
    echo $count;
?>

Пример 2:

<?php
$sum = 0; // при первом проходе запишется 1
$count = 0;
    for ($i= 1; $sum <= 1; $i++) {
        $sum += $i;
        $count++;
    }
    echo $count;
?>

Ответы (2 шт):

Автор решения: Grundy

Разница инкрементов состоит в разных возвращаемых значениях

В коде из вопроса, возвращаемое значение инкремента не используется, поэтому и разницы в работе не видно.

Чтобы увидеть разницу, надо суммировать значение, которое возвращает оператор инкремента, а не значение переменной $i:

$sum = 0; 
$count = 0;
for ($i= 1; $sum <= 1; $sum += ++$i) {
    $count++;
}
echo "$count, $sum\n";

$sum = 0; 
$count = 0;
for ($i= 1; $sum <= 1; $sum += $i++) {
    $count++;
}
echo "$count, $sum\n";
→ Ссылка
Автор решения: Алексей Шиманский

Если прочесть документацию, то увидим, что цикл for схематично выглядит так:

for (expr1; expr2; expr3)
    statement

А выражение expr3 вычисляется (выполняется) только в конце каждой итерации. То есть после всех вычислений, которые находятся в фигурных скобках. Получается, что в данном случае это ни на что не влияет.

→ Ссылка