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