PHP:字符串索引的区别在哪里?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (75)

假设$ str是一个字符串,$ str [n]和$ str {n}有什么区别。

我注意到两者似乎都是一样的,只是{}在我找到的任何文档中都没有发生。

提问于
用户回答回答于

根据手册

字符串中的字符可以通过使用方形数组括号指定字符串之后所需字符的从零开始的偏移来访问和修改,如在$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) - 字符串的第一个字符(包括多字节字符集)

扫码关注云+社区