Объясните альтернативный PHP For Loop Синтаксис: for ($ я = 1, $j = 0; $i <= 10; $j + = $i, print $i, $i ++);

Этот пример приведен в качестве альтернативного примера (пример 4, если быть точным) для написания циклов for на PHP.net.

for ($i = 1, $j = 0; $i <= 10; $j += $i, print $i, $i++);

Я понимаю циклы for, я просто не понимаю, почему переменная $j объявлена ​​в этой версии записи цикла for, который печатает числа от 1 до 10.

FYI: Удаление переменной из цикла for абсолютно не влияет на результат.

Ответ 1

Я думаю, что это просто для иллюстрации того, что вы можете использовать несколько операторов с запятыми.
Это бесполезно здесь, но показывает пример синтаксиса для:

[...] Каждое из выражений может быть пустым или содержать несколько выражений, разделенных запятыми. В expr2 все выражения, разделенные запятой, оцениваются, но результат берется из последней части. [...]

Ответ 2

Хотя в этом примере это не кажется необходимым. Похоже, что $j хранит суммирование итераций:

 1+2+3+4+5+6+7+8+9+10 = 55

Что может быть полезно в некоторых ситуациях. Таким образом, это означало бы, что этот стиль цикла является эквивалентом выполнения нескольких операций на каждой итерации, таких как получение суммирования, среднее, наибольшее значение и т.д. Точка примера состоит в том, что вы можете применять несколько операторов, разделенных запятыми.

Ответ 3

Объяснение

for ($i = 1, $j = 0; $i <= 10; $j += $i, print $i, $i++);

для циклов занимает три части, разделенные точкой с запятой (;).

  • Initialize
  • Сравнить и протестировать
  • Приращение или уменьшение.

    • Здесь $i = 1, $j = 0 - инициализация.
    • $я <= 10; сравнивает и тестирует
    • $j + = $i, print $i, $i ++ - это приращение или уменьшение части

Теперь в вашей части увеличения или уменьшения вы выполняете три задачи.
 1. является приращением $j с последним $i  2. напечатать $i  3. Приращение $i на 1

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

Итак, цикл очень прост, если вы удаляете $j из каждого места и записываете его как

for ($i = 1; $i <= 10; $i++){
    print $i;
}

Но эту переменную $j можно использовать после цикла, из которого вы взяли этот блок кода.

LIKE

for ($i = 1, $j = 0; $i <= 10; $j += $i, print $i, $i++); 
print $j;