In PHP können Sie auf verschiedene Arten auf Zeichen von Strings zugreifen, eine davon ist substr(). Sie können auch auf das N-te Zeichen in einer Zeichenfolge mit geschweiften oder eckigen Klammern zugreifen, wie folgt:
$string = 'hello';
echo $string{0}; // h
echo $string[0]; // h
Meine Frage ist, gibt es einen Vorteil des einen gegenüber dem anderen? Was ist der Unterschied zwischen {} und []?
Vielen Dank.
benutzen $string[0]die andere Methode (geschweifte Klammern) ist in PHP6 veraltet (Quelle)
Hinweis: Für denselben Zweck kann auch mit geschweiften Klammern wie in $str{42} auf Zeichenfolgen zugegriffen werden. Diese Syntax ist jedoch ab PHP 6 veraltet. Verwenden Sie stattdessen eckige Klammern.
Wird die Verwendung von {} als Bewertungsmethode ebenfalls entfernt? ZB ${$dynamic_object_name}->doStuff()
– Jay
2. Dezember 2008 um 20:08 Uhr
Nein, ich glaube, ihr Ziel ist es, nur den Zugriff auf Zeichenfolgen als Array zu standardisieren.
– Owen
2. Dezember 2008 um 20:10 Uhr
Für die Zukunft möchte ich anmerken, dass die Zeile über die veraltete Curly-Syntax vor etwa 3 Jahren aus der Dokumentation entfernt wurde, was bedeutet, dass sie in absehbarer Zeit, wenn überhaupt, nicht veraltet sein wird.
– Webmut
15. Mai 2013 um 23:00 Uhr
@Owen: PHP verwendet auch {} für Array-Zugriff. Das tat es immer. (nur gesagt)
– hakre
27. Mai 2013 um 8:28 Uhr
Als v.out of date herabgestuft. PHP6 ist nie passiert. Paceriers Antwort ist jetzt viel genauer.
– Johannes Hunt
24. Januar 2018 um 15:22 Uhr
Schrittmacher
Es gibt keinen Unterschied. Owens Antwort ist veraltet, die neueste Version von PHP Manual gibt nicht mehr an, dass sie veraltet ist §:
Auf Zeichen innerhalb von Zeichenfolgen kann zugegriffen und sie geändert werden, indem der nullbasierte Offset des gewünschten Zeichens nach der Zeichenfolge mithilfe von eckigen Array-Klammern angegeben wird, wie in $str[42]. Stellen Sie sich zu diesem Zweck einen String als ein Array von Zeichen vor. […]
Hinweis: Auf Zeichenfolgen kann auch mit geschweiften Klammern zugegriffen werden, wie in $str{42}, für den gleichen Zweck.
Es scheint jedoch, dass mehr Personen / Projekte verwendet werden []und das wissen viele gar nicht {} ist möglich. Wenn Sie Ihren Code öffentlich oder mit Personen teilen müssen, die die Syntax der geschweiften Klammern nicht kennen, ist es kann vorteilhaft zu verwenden [].
AKTUALISIERT: Zugriff auf Zeichenketten mit {} ist veraltet, verwenden [] stattdessen.
Ich bevorzuge geschweifte Klammern, weil es visuell deutlich macht, dass ich auf ein Zeichen aus einer String-Variablen zugreife, nicht auf einen Wert aus einem Array. Auf einer gewissen Ebene ist das dasselbe, aber auf der Codeebene macht es es optisch schöner.
– l008com
21. März 2019 um 1:41 Uhr
Ja, es gibt keinen Unterschied. Diese Spracheigenart hat eine Geschichte …
Ursprünglich sollte die Syntax der geschweiften Klammern die Syntax der eckigen Klammern ersetzen, die veraltet sein sollte:
Zum Zeitpunkt dieses Schreibens scheint es, dass die Ablehnung ebenfalls zurückgezogen wurde und sie nur als zwei alternative Syntaxen betrachtet werden: