【问题标题】:PHP: string indexingPHP:字符串索引
【发布时间】:2010-10-27 11:32:17
【问题描述】:

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

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

【问题讨论】:

标签: php string


【解决方案1】:

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

According to the manual:

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

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

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

【讨论】:

  • 大括号 {} 是 Perl 哈希的遗留物,正在被废弃。
【解决方案2】:

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

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

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

http://php.net/mb_substr

【讨论】:

  • 值得注意的是,在 PHP 5.6 之前 mbstring 模块的默认编码不是 UTF-8 — 这可以在两个地方进行更改:在 php 脚本中 @987654329 @-或- php.ini mbstring.internal_encoding='UTF-8'
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-11-25
  • 1970-01-01
  • 2017-01-27
  • 2017-12-01
  • 2011-03-08
  • 2021-06-06
  • 2014-11-06
相关资源
最近更新 更多