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

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

$string = 'hello';

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

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

Спасибо.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
35
0
20 638
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

используйте $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.

Будет ли также исключено использование {} в качестве метода оценки? Например, $ {$ dynamic_object_name} -> doStuff ()

Jay 02.12.2008 23:08

нет, я считаю, что их цель - просто стандартизировать доступ к строкам как к массиву.

Owen 02.12.2008 23:10

Для справки в будущем я хотел бы отметить, что строка об устаревшем фигурном синтаксисе была удалена из документации около 3 лет назад, что означает, что она не будет устаревать в ближайшее время, если вообще когда-либо.

Webmut 16.05.2013 03:00

@Owen: PHP также использует {} для доступа к массиву. Так было всегда. (Просто говорю)

hakre 27.05.2013 12:28

Проголосовано против как устаревшее. PHP6 так и не появился. Ответ Пэйсьера теперь намного точнее.

John Hunt 24.01.2018 18:22

Нет никакой разницы. Ответ Оуэна устарел, в последней версии руководства 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.

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

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

Я предпочитаю фигурные скобки, потому что они позволяют визуально понять, что я обращаюсь к символу из строковой переменной, а не к значению из массива. На каком-то уровне это то же самое, но на уровне кода это делает его визуально лучше.

l008com 21.03.2019 04:41

Да нет никакой разницы. У этой языковой причуды есть своя история ...

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

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

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

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

Другие вопросы по теме