PHP $string{0} vs. $string[0];

Lesezeit: 3 Minuten

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

Benutzer-Avatar
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:

http://web.archive.org/web/20010614144731/http://www.php.net/manual/en/language.types.string.php#language.types.string.substr.

Später wurde diese Richtlinie umgekehrt und stattdessen die Syntax mit eckigen Klammern bevorzugt:

http://web.archive.org/web/20060702080821/http://php.net/manual/en/language.types.string.php#language.types.string.substr

und sogar später würden die geschweiften Klammern veraltet sein:

http://web.archive.org/web/20080612153808/http://www.php.net/manual/en/language.types.string.php#language.types.string.substr

Zum Zeitpunkt dieses Schreibens scheint es, dass die Ablehnung ebenfalls zurückgezogen wurde und sie nur als zwei alternative Syntaxen betrachtet werden:

http://web.archive.org/web/20160607224929/http://php.net/manual/en/language.types.string.php#language.types.string.substr

Der Zugriff auf geschweifte Klammern war in PHP 7.4 veraltet

Array- und String-Offset-Zugriff mit geschweiften Klammern ¶

Die Array- und String-Offset-Zugriffssyntax mit geschweiften Klammern ist veraltet. Verwenden Sie $var[$idx] statt $var{$idx}.

PHP 7.4 Veraltete Funktionen, PHP Core

1011790cookie-checkPHP $string{0} vs. $string[0];

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy