PHP:字符串索引

cod*_*nix 19 php string

$ str [n]和$ str {n}之间有什么区别,因为$ str是一个字符串.

我注意到两者似乎都是一样的,除了{}在我找到的任何文档中都没有出现.

Pao*_*ino 32

他们是一样的.但是,他们正在摆脱{}语法,所以你应该去[].

根据手册:

通过使用方形数组括号指定字符串后所需字符的从零开始的偏移量,可以访问和修改字符串中的字符,如$str[42].将字符串视为用于此目的的字符数组.当您想要提取或替换多个字符时substr(),substr_replace()可以使用这些函数.

注意:从PHP 7.1.0开始,还支持负字符串偏移.这些指定了字符串末尾的偏移量.以前,E_NOTICE为读取(产生空字符串)和E_WARNING写入(使字符串保持不变)而发出的负偏移量.

注意:$str{42}为了相同的目的,也可以使用大括号访问字符串,如同.

  • 大括号`{}`是Perl哈希的遗产,正在被抛弃. (4认同)

小智 11

要小心,$str[n]$str{n}给出第Stringn个字符,而不是第n个字符String.对于多字节编码(UTF-8等),一个字符不需要是一个字节.

$str{0} - 字符串的第一个字节

mb_substr($str, 0, 1) - 字符串的第一个字符(包括多字节字符集)

http://php.net/mb_substr

  • 值得注意的是,**在 PHP 5.6 之前** [mbstring](http://php.net/mbstring) 模块的默认编码不是 UTF-8 — 这可以在两个地方更改:在 php 脚本中 `mb_internal_encoding ('UTF-8');` -或- php.ini `mbstring.internal_encoding='UTF-8'` (3认同)