2016-03-23 11 views
0

ich irgend Open-Source-Code ausgesehen haben und über das kam ...For-Schleife Erklärung, was bedeutet (;;) bedeuten

for(;;) { 
    echo "a:" . $throttle->throttle($identifier, 5, 1000); 
} 

Was die ;; tut für innerhalb der for-Aussage stehen - das habe ich noch nie zuvor gesehen?

+2

Es ist einfach Erstellen einer Endlosschleife, keine Bedingungen zum Initialisieren, Beenden oder Anpassen während der Iterationen .... persönlich würde ich 'while (true)' bevorzugen, da es intuitiver ist, was es bedeutet –

+0

groß - ich habe Es funktioniert und realisierte das gleiche :) Fühlen Sie sich frei, das als eine Antwort für mich zu akzeptieren – Zabs

Antwort

1

Es ist das gleiche wie while (true), eine Endlosschleife.

1

Dies ist eine Endlosschleife. In einer typischen for-Schleife gibt es Ausdrücke zwischen den Semikola. Wenn Sie es leer lassen, ist es eine Schleife, die niemals endet.

1

Es ist eine Endlosschleife. Anatomie einer for-Schleife ist

for (initialization_expression ; test_condition; update_expression) 
    { 
     // Code 
    } 

In Ihrem Fall alle drei Teile fehlen. Da die Testbedingung fehlt, wird sie als wahr ausgewertet und die Schleife wird für immer fortgesetzt.

1

Die Syntax erklärt bei Sprachreferenz → Kontrollstrukturen → for (Hervorhebung von mir):

for (expr1; expr2; expr3) 

[...]

Jeder der Ausdrücke leer sein oder mehrere durch Kommas getrennte Ausdrücke enthalten. In Ausdruck2 werden alle Ausdrücke, die durch ein Komma getrennt sind ausgewertet, aber das Ergebnis wird aus dem letzten Teil genommen. expr2 ist leer bedeutet die Schleife sollte unbegrenzt (PHP implizit betrachtet es als WAHR, wie C) ausgeführt werden. Dies ist möglicherweise nicht so nutzlos , wie Sie vielleicht denken, da Sie die Schleife häufig mit einerbedingten Break-Anweisung beenden möchten, anstatt den for-Wahrheitsausdruck zu verwenden.

1

Die Syntax für for(initialization;condition;increment/decrement) so die Initialisierung wird einmal aufgerufen, bevor die for-Schleife beginnt. Die letzten beiden Parameter werden nach jeder Iteration ausgewertet.

Wenn Sie nun die Abbruchbedingung entfernen, entspricht dies einer while(true) Schleife. Andere Parameter werden ebenfalls ignoriert, wie in Ihrer Frage, da sie auch optional sind und in Ihrem Fall nicht benötigt werden.

Verwandte Themen