Как вы помните порядок выражений в цикле for? - PullRequest
2 голосов
/ 05 августа 2010

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

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

Мнемоника может помочь

Ответы [ 8 ]

7 голосов
/ 05 августа 2010

ICE:

  • Инициализация
  • Проверка
  • Выполнение
6 голосов
/ 05 августа 2010

Думай логично! Порядок такой же, как выражения вычисляются.

for ($i = 0; $i < 10; ++$i) {
    echo $i;
}
// is same as
$i = 0; // 1.
while ($i < 10) { //2.
    echo $i;
    ++$i; // 3.
}
2 голосов
/ 05 августа 2010

F первый (инициализация) O Только в то время как (условие) R Включение (увеличение или уменьшение)

2 голосов
/ 05 августа 2010
     START -> CHECK FOR DANGER -> MOVE AHEAD 

for( $i = 0 ;    $i < 100 ;         $i++    )

Надеюсь, это поможет :-)
Удачи!

2 голосов
/ 05 августа 2010

Они идут по порядку.

for (expr1; expr2; expr3)

expr1: оценивается один раз в начале цикла
expr2: вычисляется в начале каждой итерации цикла
expr3: вычисляется в конце каждой итерации цикла

Вы хотите инициализировать сначала, проверить условие во-вторых и увеличить (или уменьшить) свой счетчик последним.

0 голосов
/ 05 августа 2010

SAM

  • Запустите свой двигатель
  • Мы еще там?
  • Переместить
0 голосов
/ 05 августа 2010

Просто помните, что охранник всегда проверяется перед приращением, поэтому вы пишете его раньше.

Если вы не помните, чтобы проверка была проверена перед приращением, у вас большие проблемы, потому что вы не знаете, что будет делать цикл: p

0 голосов
/ 05 августа 2010

Я могу быть глупым, но вам не нужна эта структура:

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

Я не знаю, как мнемоника помнила эту структуру, я всегда просто видела ее как:

STARTING OFF; DO WHILE THIS; PERFORM AFTER EACH ROTATION

Скорее:

DEFINE PRIOR TO EXECUTION; DEFINE EXECUTION LIMITS; DEFINE OPERATION FOR EACH ROTATION

...