Hi!
Aber woher "weiß" der Parser, dass der Komma-Operator in Listen -wie etwa in der Parameterliste eines Funktionsaufrufs oder bei Initialisierungswerten für Array oder enums- nicht angewendet werden darf? Innerhalb eines geklammerten Teilausdrucks in so einer Liste dagegen schon? Er hat also schon etwas Geheimnisvolles.
Nicht wirklich. Viele Syntaxbestandteile können mehrfach vorkommen, bestes Beispiel sind die Buchstaben: Funktionsnamen, Variablennamen, Schlüsselwörter. Wenn der Parser ein bestimmtes Element erkannt hat, weiß er ja, was danach kommen kann und was nicht. Die Klammern nach einem Funktionsnamen begrenzen die Argumentliste. Innerhalb der Argumentliste gelten für die Klammern andere Regeln, weil sie nun Bestandteile von Ausdrücken sind. Und wenn in diesem Ausdruck ein Funktionsname vorkommt, ändert sich wieder die Bedeutung der Klammern. usw. usf.
Die einzige andere Anwendung, die mir einfällt wäre bei for, um mehrere Ausdrücke je expr{1..3} ausführen zu können.
Genau da -in Kontrollstrukturen wie z.B. for, seltener auch while- setze ich ihn auch gern ein.
Im while-Ausdruck mag PHP keine Kommas.
Lo!