Как посчитать инверсию for в php?

Моя проблема: я хочу посчитать в обратном порядке в цикле for.

Это противоположно тому, что я хочу сделать:

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

Если поставить $i-- не работает (у меня падает сервер).

Помогите мне!

С уважением, Адам


person Adam Halasz    schedule 02.07.2010    source источник
comment
Если это приведет к сбою вашего сервера... происходит что-то очень неправильное. Или это одно из либеральных применений слова «крушение»?   -  person Artefacto    schedule 02.07.2010
comment
@Artefacto: Он имеет в виду, что PHP-скрипт никогда не возвращается, а загрузка ЦП возрастает. Как это бывает, когда вы пишете бесконечные циклы.   -  person Tomalak    schedule 02.07.2010
comment
Это зависало, потому что я запустил бесконечный цикл: P @thetaiko решил для меня. Спасибо за помощь!   -  person Adam Halasz    schedule 02.07.2010
comment
спасибо, ребята, вы круты!   -  person Adam Halasz    schedule 02.07.2010


Ответы (4)


Когда вы говорите, что $i-- приводит к сбою вашего сервера, вы изменили инициализацию и условие для $i?

for($i=10; $i>=1; $i--){
    echo $i;
}
person thetaiko    schedule 02.07.2010
comment
Омг :))) Я такой нуб, да, я изменил это, но не так И это работает, спасибо :D - person Adam Halasz; 02.07.2010

Если вы возьмете for, как вы написали, и просто замените $i++ на $i--, значение $i будет уменьшаться с каждой итерацией (1, 0, -1, -2 и т. д.), а условие цикла $i<=10 всегда будет истинным.

Если вы хотите считать в обратном порядке, вам также необходимо изменить другие части (условие инициализации и зацикливания):

for ($i=10; $i>=1; $i--){
    echo $i;
}

Или вы берете последнее и вычитаете из него текущее значение и добавляете к нему первое значение:

for ($first=1, $i=$first, $last=10; $i<=$last; $i++){
    echo $last - $i + $first;
}
person Gumbo    schedule 02.07.2010

Я не понимаю, просто делаю

for($i=10;$i>=1;$i--){
    echo $i;
}

недостаточно?

person Jack    schedule 02.07.2010

из руководства по PHP.

оператор for (expr1; expr2; expr3)

Первое выражение (expr1) оценивается (выполняется) один раз безоговорочно в начале цикла.

В начале каждой итерации оценивается expr2. Если он оценивается как TRUE, цикл продолжается, и выполняются вложенные операторы. Если он оценивается как FALSE, выполнение цикла завершается.

В конце каждой итерации expr3 оценивается (выполняется).

person just somebody    schedule 02.07.2010