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

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

$string = 'hello';

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

Мой вопрос в том, есть ли преимущество одного над другим? Какая разница между {} и []?

Спасибо.

Ответ 1

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

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

Ответ 2

Нет никакой разницы. Ответ Оуэна устарел, последняя версия PHP Manual больше не утверждает, что он устарел. §:

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

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

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

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

Ответ 3

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

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

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