2017-01-25 7 views
0

ich solchen PHP-Code gefunden:Warum wird diese Schleife nur einmal ausgeführt?

$a = 5; 
$i = 4; 
for($i = &$a; $i < 10; ++$i); 

echo "a=$a, i=$i"; 

ich diese Schleife 4-mal ausgeführt werden erwarten würde, da ich $ ein Verweis auf einen $ wird (rechts?). Allerdings wird Schleife nur einmal und Ausgänge ausgeführt:

a = 10, = i 10

ich nicht verstehen kann, warum es outh wie das funktioniert. Irgendwelche Ideen?

+6

Es gibt ein Semikolon nach Ihrem 'for'. Aus diesem Grund sollten geschweifte Klammern immer benötigt werden. – 4castle

+1

Korrekte Einrückung würde grundsätzlich SHOUT, was der Fehler ist – RiggsFolly

+0

ist es eine gute Möglichkeit, CPU-Zyklen zu nutzen, obwohl – RiggsFolly

Antwort

0

Es funktioniert, weil die for-Anweisung wie eine einzelne Zeilenanweisung als Ergebnis des Semikolons verarbeitet wird.

for($i = &$a; $i < 10; ++$i); 

kann auch als

for($i = &$a; $i < 10; ++$i) echo $i; 

Ohne die geschweiften Klammern zu sehen ist, die folgende Zeile wird ein Teil der for-Anweisung in Betracht gezogen werden, Ihre Linie nur ein Semikolon ist das Ende der Zeile anzuzeigen.

Der richtige Code würde so aussehen.

$a = 5; 
for($i = $a; $i < 10; ++$i) echo "a=$a, i=$i"; 
Verwandte Themen