【问题标题】:Accessing characters in a string using array syntax使用数组语法访问字符串中的字符
【发布时间】:2013-01-03 08:53:20
【问题描述】:

假设我们有这个代码$test = 'text';echo $test[0]echo $test{0} 有什么区别?结果是一样的。

将包含字符串的变量视为字符数组是否是一种好习惯?

【问题讨论】:

  • “echo $test[0] 和echo $test{0}有什么区别?结果是一样的。” 总之,根据区别的定义,没有区别。
  • 如果没有区别。为什么我应该使用 $foo[n] 或 $foo{n}?哪个更好?
  • 引用手册:“也可以使用大括号访问字符串,如 $str{42},用于相同目的。但是,从 PHP 6 开始不推荐使用此语法。请改用方括号。”
  • @fab 你为什么不发表你的评论作为答案呢?这是对问题的正确和完整的答案。

标签: php string


【解决方案1】:

好的,我将汇总我的 cmets 作为答案:

引用手册

也可以使用大括号访问字符串,如 $str{42},用于 相同的目的。但是,从 PHP 7 开始不推荐使用此语法。 请改用方括号。

此外,尽管没有记录,{} 访问器也适用于数组,这使得 $foo{$bar} 和 $foo[$bar] 完全等效。为了方便 Perl 程序员,这只是旧语法。

关于您的第二个问题,如果将字符串视为字符数组是一种好习惯:是的,如果它对您的任务有用,那就去做吧。在像 C 这样的低级语言中,字符串字符数组,所以这样对待它们是很自然的。

但请记住,PHP 对 unicode 的支持很差。因此,如果您的字符串采用多字节编码(即 UTF-8),这可能无法按预期工作。在这种情况下最好使用multibyte functions

【讨论】:

    【解决方案2】:

    你可以写“你好,我是字符串$string{0}的一个字符”

    但是你不能写“你好,我是字符串$string[0]的一个字符”

    你必须使用字符串连接符号像
    “你好,我是一个字符串的字符”。 $字符串[0];

    【讨论】:

    • 除此之外,“你好,我是字符串 {$string[0]} 的一个字符”(所谓的“复杂字符串语法”)也可以。
    • 您不需要使用字符串连接。你可以只使用大括号,就像@Hissvard 说的那样。
    【解决方案3】:

    https://www.php.net/manual/en/language.types.string.php

    使用 {} 语法访问字符串文字中的字符在 PHP 7.4 中已被弃用。这已在 PHP 8.0 中删除。

    所以,总是使用方括号$str[0]

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-23
      • 1970-01-01
      • 2021-12-20
      • 1970-01-01
      相关资源
      最近更新 更多