phpbar.de logo

Mailinglisten-Archive

[php] =?iso-8859-1?q?L=F6schung_von_Eintr=E4gen_in_assoziativen_Arrays?=

[php] =?iso-8859-1?q?L=F6schung_von_Eintr=E4gen_in_assoziativen_Arrays?=

Matthias Stolt matthias_(at)_stolt.de
Tue, 12 Dec 2000 01:03:14 +0100


>>> > 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