Hmm, die Frage ist, für welche Art von Operanden die Zuweisung überhaupt gültig ist. Du erwartest 2, weil 2 * $a 2 ergibt und die anschließende Zuweisung 2 = 10 lautet? Wenn überhaupt, wäre das Ergebnis dieser Zuweisung doch 10, wie mkinzler schreibt. Aber kann man dem Ausdruck 2 * $a überhaupt etwas zuweisen? Der Zuweisungsoperator kann sich doch eigentlich nur auf das $a beziehen und dann logischerweise auf die Version vor dem Ausdruck (2 * $a ändert den Wert von $a nicht). Das wäre jetzt meine Interpretation. Von daher würde ich ohnehin 20 erwarten.
In der Doku steht dazu:
Zitat von
PHP:
Obwohl ! einen höheren Rang gegenüber = hat, erlaubt es Ihnen PHP immer noch ähnliche Ausdrücke wie den folgenden zu schreiben: if (!$a =foo()).In diesem Ausdruck wird die Ausgabe von foo() der Variablen $a zugewiesen.
Was genau dieses Verhalten beschreibt. Die Zuweisung bezieht sich auf die Variable. Das ist wohl ein Sonderfall.