Christian Kruse: Anfängerproblem: Array?

Beitrag lesen

你好 wahsaga,

warum ist das eigentlich notwendig?

Ich denke mal deshalb, weil Ausdrücke dieser Art von rechts nach links
ausgewertet werden - und _bevor_ getimagsize() ein Array zurückgegeben
hat, gibt es nun mal nichts, worauf man indexbasiert zugreifen könnte.

Naja, das stimmt nicht so recht. Da sitzt einfach nur ein Parser hinter,
der das prüft - und dieser Fall ist nunmal verboten worden. Vielleicht,
weil die Programmierer das nicht bedacht haben, vielleicht auch aufgrund
von Prioritäts-Problemen.

Wie ein Ausdruck ausgewertet wird, hängt an der Operator-Rangreihenfolge.
Beispiel: $a = 10 + 5 + 7 + 3; Intern wird daraus (abhängig vom
Parser-Typen) entweder

=
 $a   +
    10  +
       5  +
         7  3

oder

=
     +      $a
   +  10
 +  5
3 7

Zuerst wird der unterste Knoten ausgewertet, danach der darüber, etc, pp.
Die Reihenfolge der Auswertung hat also nur sekundär etwas damit zu tun,
wie herum ein Parser parsed.

Der Ausdruck echo getimagesize($imglocation)[3]; müsste also wie folgt
geparsed werden:

echo
                           []
getimagesize($imglocation)    3

Vermutlich geht das auch, wenn man (getimagesize($imglocation))[3] schreibt.

Ich könnte mir noch vorstellen, dass, wenn dieser Fall erlaubt wird, die
Grammatik nicht mehr eindeutig ist für diesen Parser-Typen. Heisst, wenn
getimagesize($imglocation)[3] geschrieben wird, was ist dann gemeint? Es
könnte ja auch

[]
getimagesize ($imglocation) 3

gemeint sein.

再见,
 克里斯蒂安