Wie ist ++ $ a + $ a ++ mehrdeutig in PHP?

8

Das php Handbuch behauptet, dass

%Vor%

ist unter seiner Grammatik mehrdeutig, aber es scheint mir extrem klar zu sein. ++ $ a und $ a ++ werten zuerst von links nach rechts, also ++ $ a Inkremente aus und geben dann 2 zurück, und $ a ++ gibt 2 zurück und erhöht sich dann. Die Summe von 2 + 2 ist 4, also würde es 4 wiederholen. Das PHP-Handbuch sagt sehr deutlich, dass es 4 oder 5 drucken kann.

Gibt die PHP-Spezifikation nicht an, dass Operationen von links nach rechts ausgeführt werden?

Selbst wenn es nicht erzwingt, dass Operationen von links nach rechts ausgeführt werden, würde es in diesem Fall nicht 4 zurückgeben?

Bearbeiten: Ich habe die Seite erneut gelesen und festgestellt, dass sie von jedem einzelnen Operator bestimmt wird. + hat die niedrigste Priorität und wird von links nach rechts ausgewertet, daher scheint meine frühere Annahme korrekt zu sein. Ich verstehe es immer noch nicht.

    
nnythm 05.04.2012, 01:35
quelle

2 Antworten

3

Bitte beachten Sie, dass dies nur meine bescheidene Meinung ist.

Ich denke, die Idee hinter diesem Ergebnis ist, dass keiner der Aperanden Vorrang hat, wenn es einen einzigen Operator gibt und dass in einer Operation eine Variable als Referenz beibehalten wird, anstatt durch ihr Ergebnis während der gesamten Berechnung bis zum letzten ersetzt zu werden (Plus, in diesem Beispiel). Also wenn es von l-r geht:

%Vor%

während sonst:

%Vor%

Ich bin mir aber nicht sicher.

    
inhan 05.04.2012, 03:08
quelle
5

++$a let $a ist 2 und gibt 2 zurück, $a++ inkrement $a wieder, also $a ist jetzt 3, aber es gibt 2 zurück.

In der gleichen PHP-Version ist das Ergebnis immer gleich. Es kann jedoch zu anderen Ergebnissen führen, wenn sich die PHP-Version ändert. Es hängt von ++$a und $a++ ab, welche zuerst ausgewertet wird. Wenn $a++ zuerst ausgewertet wird, ist das Ergebnis 5, andernfalls wird das Ergebnis 4 sein.

    
xdazz 05.04.2012 01:40
quelle