В чем разница между $ str [n] и $ str {n}, учитывая, что $ str является строкой.
Я заметил, что оба они работают одинаково, за исключением того, что {} не встречается в какой-либо документации, которую я нашел.
Они одинаковые. Однако они избавляются от синтаксиса {}
, поэтому вы должны пойти с []
.
Согласно руководству :
Символы внутри строк могут быть доступны и изменены, указав нулевое смещение нужного символа после строки, используя квадратные квадратные скобки, как в
$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)
– первый символ строки (включая многобайтовые кодировки)