PHP:字符串索引

2022-08-30 18:13:41

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

我注意到两者似乎工作相同,除了{}在我找到的任何文档中都没有出现。


答案 1

它们是相同的。但是,他们正在摆脱语法,因此您应该使用.{}[]

根据手册

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

注意:从 PHP 7.1.0 开始,还支持负字符串偏移量。它们指定从字符串末尾开始的偏移量。以前,为读取(生成空字符串)和写入(保持字符串不变)而发出负偏移量。E_NOTICEE_WARNING

注意:在 PHP 8.0.0 之前,出于相同的目的,也可以使用大括号访问字符串,如$str{42}。此大括号语法自 PHP 7.4.0 起已弃用,自 PHP 8.0.0 起不再受支持。


答案 2

请注意,并给出 的第 n 个字节 ,而不是 的第 n 个字符。对于多字节编码(UTF-8 等),一个字符不需要是一个字节。$str[n]$str{n}StringString

$str[0]– 字符串的第一个字节

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

http://php.net/mb_substr


推荐