【发布时间】:2010-10-27 11:32:17
【问题描述】:
$str[n] 和 $str{n} 之间有什么区别,因为 $str 是一个字符串。
我注意到两者的工作方式似乎相同,除了我找到的任何文档中都没有出现 {}。
【问题讨论】:
-
我在string documentation 中找到了它:“注意:字符串也可以使用大括号访问,如
$str{42},用于相同目的。” (但正如答案中所述,[]语法是更好的选择)
$str[n] 和 $str{n} 之间有什么区别,因为 $str 是一个字符串。
我注意到两者的工作方式似乎相同,除了我找到的任何文档中都没有出现 {}。
【问题讨论】:
$str{42},用于相同目的。” (但正如答案中所述,[] 语法是更好的选择)
它们是一样的。但是,它们正在摆脱 {} 语法,因此您应该使用 []。
可以访问和修改字符串中的字符,方法是使用方数组括号指定字符串后所需字符的从零开始的偏移量,如
$str[42]。为此,将字符串视为字符数组。当您想要提取或替换超过 1 个字符时,可以使用函数substr()和substr_replace()。注意:从 PHP 7.1.0 开始,还支持负字符串偏移量。这些指定从字符串末尾的偏移量。以前,负偏移量发出
E_NOTICE用于读取(产生一个空字符串)和E_WARNING用于写入(保持字符串不变)。注意:也可以使用大括号访问字符串,如
$str{42},用于相同目的。
【讨论】:
{} 是 Perl 哈希的遗留物,正在被废弃。
小心,$str[n] 和$str{n} 给出String 的第n 个字节,而不是String 的第n 个字符。对于多字节编码(UTF-8 等),一个字符不需要是一个字节。
$str{0} – 字符串的第一个字节
mb_substr($str, 0, 1) – 字符串的第一个字符(包括多字节字符集)
【讨论】:
mbstring.internal_encoding='UTF-8'