Mailinglisten-Archive |
>>> > warum muß ich statt $bar = (3 == $foo) ? &$foo : &$foo die Langform mit > >Ist nicht die Runtime-Referenz ein auslaufendes Feature? >Leider weder mit noch ohne allow_call_time_pass_reference, >was gegen meine Theorie spricht. Nachtrag: Wer lesen kann ist im Vorteil - und wer es dann auch noch macht, der nutzt den Vorteil aus (damit meine ich mich selbst;-) ). Im Manual steht unter Expression folgender Teil There is one more expression that may seem odd if you haven't seen it in other languages, the ternary conditional operator: $first ? $second : $third If the value of the first subexpression is true (non-zero), then it the second subexpression is evaluated, and that is the result of the conditional expression. Otherwise, the third subexpression is evaluated, and that is the value. Schlüsselwort zu dem Problem ist evaluated. second und third müssen Statements sein. Also Sprachkonstrukte die sich evaluieren lassen. Das Konstrukt & $foo ist aber nicht evaluierbar, nur als $bar = & $foo ist er evaluierbar. Denn & sagt binde den Variablennamen der vor den = steht ($bar) an den gleiche Wertespeicher der an $foo gebunden ist. & braucht also hier zwei Mitspieler, den vor dem = und dem nach den &. Nur ein einfache & $foo läßt sich nicht evaluieren und daher der Parse error. Es sind als Argumente für den Terniären Operator ? eben zwei Statements gefordert. Diemal mit mehr Vertrauen zu der Theorie Matthias
php::bar PHP Wiki - Listenarchive