2010-07-02 6 views
6

Mein Problem: Ich möchte in der For-Schleife inverse zählen.Wie inverse mit für in in PHP zu zählen?

Das ist das Gegenteil von dem, was ich tun möchte:

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

Wenn ich $i-- nicht funktioniert gesetzt hat (mein Server abstürzt).

Hilfe meeee!

Mit besten Grüßen, Adam

+1

Wenn es Ihren Server abstürzt ... passiert etwas sehr falsches. Oder ist es einer dieser liberalen Verwendungen von "Crash"? – Artefacto

+0

@Artefacto: Was er meint, ist "das PHP-Skript kehrt nie zurück und CPU-Last steigt". Wie es passiert, wenn Sie Endlosschleifen schreiben. – Tomalak

+0

Es stürzte ab, weil ich eine Endlosschleife startete: P @thetaiko hat sich für mich entschieden. Danke für die Hilfe! – Adam

Antwort

23

Wenn Sie sagen $i-- Ihr Server abstürzt, haben Sie die Initialisierung und den Zustand ändern für $i?

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

Omg :))) Ich bin so ein noob, ja ich habe es geändert, aber nicht so Und es funktioniert dank: D – Adam

6

Wenn Sie die for nehmen, wie Sie geschrieben und ersetzen Sie einfach $i++ mit $i--, wird der Wert von $i wird mit jeder Iteration (1, 0, -1, -2, etc.) und die Schleifenbedingung verringert werden $i<=10 ist immer wahr.

Wenn Sie rückwärts zählen möchten, müssen Sie auch die anderen Teile (Initialisierung und Schleifenbedingung) ändern:

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

Oder nehmen Sie den letzten und den aktuellen Wert von ihm subtrahieren und den ersten Wert hinzufügen es:

for ($first=1, $i=$first, $last=10; $i<=$last; $i++){ 
    echo $last - $i + $first; 
} 
+0

vielen Dank! – Adam

2

bekomme ich es nicht, nur

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

n zu tun ist genug?

+0

vielen Dank! – Adam

1

vom PHP manual

für (Expr1; expr2; expr3) Anweisung

Der erste Ausdruck (Expr1) ausgewertet wird (ausgeführt) einmal unbedingt am Anfang der Schleife.

Zu Beginn jeder Iteration wird expr2 ausgewertet. Wenn es TRUE ergibt, wird die Schleife fortgesetzt und die verschachtelten Anweisungen werden ausgeführt. Wenn es FALSE ergibt, endet die Ausführung der Schleife.

Am Ende jeder Iteration wird Ausdr3 ausgewertet (ausgeführt).

+0

vielen Dank! – Adam