В чем разница между $ str [n] и $ str {n}, учитывая, что $ str является строкой.
Я заметил, что оба, похоже, работают одинаково, за исключением того, что {} не встречается ни в одной найденной мной документации.
Они одинаковы. Однако они избавляются от синтаксиса {}, поэтому вам следует использовать [].
{}
[]
Согласно инструкции :
Доступ к символам в строках можно изменить, указав смещение нуля нужного символа после строки с использованием квадратных скобок массива, как в $str[42]. Думайте о строке как о массиве символов для этой цели. Функции substr() и substr_replace() можно использовать, когда вы хотите извлечь или заменить более 1 символа. Примечание. Начиная с PHP 7.1.0, также поддерживаются отрицательные смещения строк. Они определяют смещение от конца строки. Ранее отрицательные смещения выдавали E_NOTICE для чтения (в результате получается пустая строка) и E_WARNING для записи (оставляя строку нетронутой). Примечание: для доступа к строкам также можно использовать фигурные скобки, как в $str{42}, для той же цели.
Доступ к символам в строках можно изменить, указав смещение нуля нужного символа после строки с использованием квадратных скобок массива, как в $str[42]. Думайте о строке как о массиве символов для этой цели. Функции substr() и substr_replace() можно использовать, когда вы хотите извлечь или заменить более 1 символа.
$str[42]
substr()
substr_replace()
Примечание. Начиная с PHP 7.1.0, также поддерживаются отрицательные смещения строк. Они определяют смещение от конца строки. Ранее отрицательные смещения выдавали E_NOTICE для чтения (в результате получается пустая строка) и E_WARNING для записи (оставляя строку нетронутой).
E_NOTICE
E_WARNING
Примечание: для доступа к строкам также можно использовать фигурные скобки, как в $str{42}, для той же цели.
$str{42}
Будьте осторожны, $str[n] и $str{n} дают n-й байт String, а не n-й символ String. Для многобайтового кодирования (UTF-8 и т. Д.) Один символ не обязательно должен быть одним байтом.
$str[n]
$str{n}
String
$str{0} - первый байт строки
$str{0}
mb_substr($str, 0, 1) - первый символ строки (включая многобайтовые кодировки)
mb_substr($str, 0, 1)
http://php.net/mb_substr