PHP $ string {0} против $ string [0]; - PullRequest
31 голосов
/ 02 декабря 2008

В PHP вы можете получить доступ к символам строк несколькими различными способами, одним из которых является substr (). Вы также можете получить доступ к N-му символу в строке с помощью фигурных или квадратных скобок, например:

$string = 'hello';

echo $string{0}; // h
echo $string[0]; // h

Мой вопрос: есть ли преимущество одного над другим? В чем разница между {} и []?

Спасибо.

Ответы [ 3 ]

38 голосов
/ 02 декабря 2008

использовать $string[0], другой метод (фигурные скобки) устарел в PHP6 ( src )

Примечание. Для доступа к строкам также можно использовать фигурные скобки, как в $ str {42}, для той же цели. Однако этот синтаксис устарел с PHP 6. Вместо этого используйте квадратные скобки.

20 голосов
/ 07 ноября 2014

Разницы нет. Ответ Оуэна устарел, последняя версия PHP Manual больше не утверждает, что он устарел & sect; :

Символы в строках могут быть доступны и изменены, указав смещение от нуля нужного символа после строки, используя квадратные скобки, как в $str[42]. Думайте о строке как о массиве символов для этой цели . [...]

Примечание. Доступ к строкам также можно получить с помощью фигурных скобок, как в $str{42}, для той же цели .

Однако кажется, что все больше людей / проектов используют [], и что многие люди даже не знают, {} возможно. Если вам нужно поделиться своим кодом публично или с людьми, которые не знают синтаксис фигурных скобок, может выгодно использовать [].

ОБНОВЛЕНО: доступ к строковым символам с {} устарел, вместо этого используйте [].

2 голосов
/ 13 июня 2016

Да, нет никакой разницы. Эта странная странность имеет некоторую историю ...

Изначально синтаксис фигурных скобок предназначался для замены синтаксиса в квадратных скобках, который должен был быть объявлен устаревшим:

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

Позже эта политика была отменена, и вместо нее был выбран синтаксис в квадратных скобках:

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

и даже позже, фигурные скобки, которые нужно было объявить устаревшими:

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

На момент написания этой статьи, похоже, что амортизация также была отменена, и они просто рассматриваются как два альтернативных синтаксиса:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...