В PHP вы можете получить доступ к символам строк несколькими способами, одним из которых является substr (). Вы также можете получить доступ к N-му символу в строке с помощью фигурных или квадратных скобок, например:
$string = 'hello';
echo $string{0}; // h
echo $string[0]; // h
Мой вопрос: есть ли преимущество одного перед другим? В чем разница между {} и []?
Спасибо.






используйте $string[0], другой метод (фигурные скобки) устарел в PHP6 (src)
Note: Strings may also be accessed using braces, as in $str{42}, for the same purpose. However, this syntax is deprecated as of PHP 6. Use square brackets instead.
нет, я считаю, что их цель - просто стандартизировать доступ к строкам как к массиву.
Для справки в будущем я хотел бы отметить, что строка об устаревшем фигурном синтаксисе была удалена из документации около 3 лет назад, что означает, что она не будет устаревать в ближайшее время, если вообще когда-либо.
@Owen: PHP также использует {} для доступа к массиву. Так было всегда. (Просто говорю)
Проголосовано против как устаревшее. PHP6 так и не появился. Ответ Пэйсьера теперь намного точнее.
Нет никакой разницы. Ответ Оуэна устарел, в последней версии руководства PHP больше не указано, что он устарел §:
Characters within strings may be accessed and modified by specifying the zero-based offset of the desired character after the string using square array brackets, as in
$str[42]. Think of a string as an array of characters for this purpose. [...]Note: Strings may also be accessed using braces, as in
$str{42}, for the same purpose.
Однако кажется, что все больше людей / проектов используют [], и что многие люди даже не знают, что {} возможен. Если вам нужно поделиться своим кодом публично или с людьми, которые не знают синтаксиса фигурных скобок, май будет полезно использовать [].
ОБНОВЛЕНО: доступ к строковым символам с помощью {} устарел, используйте вместо него [].
Я предпочитаю фигурные скобки, потому что они позволяют визуально понять, что я обращаюсь к символу из строковой переменной, а не к значению из массива. На каком-то уровне это то же самое, но на уровне кода это делает его визуально лучше.
Да нет никакой разницы. У этой языковой причуды есть своя история ...
Первоначально синтаксис фигурных скобок был предназначен для замены синтаксиса квадратных скобок, который должен был быть устаревшим:
Позже эта политика была отменена, и вместо нее был предпочтен синтаксис квадратных скобок:
и даже позже, фигурные скобки one будут устаревшими:
На момент написания этой статьи кажется, что устаревание также было снято, и они просто считаются двумя альтернативными синтаксисами:
Будет ли также исключено использование {} в качестве метода оценки? Например, $ {$ dynamic_object_name} -> doStuff ()