PHP: индексирование строк

В чем разница между $ str [n] и $ str {n}, учитывая, что $ str является строкой.

Я заметил, что оба они работают одинаково, за исключением того, что {} не встречается в какой-либо документации, которую я нашел.

Related of "PHP: индексирование строк"

Они одинаковые. Однако они избавляются от синтаксиса {} , поэтому вы должны пойти с [] .

Согласно руководству :

Символы внутри строк могут быть доступны и изменены, указав нулевое смещение нужного символа после строки, используя квадратные квадратные скобки, как в $str[42] . Подумайте о строке как массиве символов для этой цели. Функции substr() и substr_replace() могут использоваться, когда вы хотите извлечь или заменить более 1 символа.

Примечание. С PHP 7.1.0 также поддерживаются отрицательные смещения строк. Они определяют смещение от конца строки. Раньше отрицательные смещения испускали E_NOTICE для чтения (давая пустую строку) и E_WARNING для записи (оставляя строку нетронутой).

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

Будьте осторожны, $str[n] и $str{n} дают n-й байт String , а не n-й символ String . Для многобайтового кодирования (UTF-8 и т. Д.) Одному символу не нужно быть одним байтом.

$str{0} – первый байт строки

mb_substr($str, 0, 1) – первый символ строки (включая многобайтовые кодировки)

http://php.net/mb_substr