2015-12-13 17 views
11

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

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

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

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

+1

Очень хороший вопрос. Это '$ j = 0' будет оцениваться только один раз, а затем' $ j + = $ i' для ... Что? – JakeGould

+0

Кажется, что 'j' ничего не делает, кроме суммы' i' ... o.O – Andrew

+0

Ну, похоже, что в документации был принят стиль, похожий на сам язык. Разоглушился и стал полным. – Richard

ответ

4

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

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

3

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

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

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

2

Объяснение

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

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

  1. Initialize
  2. Сравнение и тест
  3. Increment или декремента.

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

Теперь в вашем инкремента или декремента расстанемся у вас есть три задачи.
1. является приращение $ J $ с последним я 2. печать $ я 3. приращению $ я на 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; 
Смежные вопросы