使用数组语法访问字符串中的字符


Accessing characters in a string using array syntax

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

是一个很好的做法来对待一个变量,其中包含一个字符串像一个数组的字符?

好的,我将把我的评论汇总为一个答案:

引用手册

string也可以使用大括号访问,如$str{42}同样的目的。但是,这种语法在PHP 7中已弃用。

另外,尽管没有文档记录,{}访问器也可以用于数组,这使得$foo{$bar}和$foo[$bar]完全相等。它只是为了方便Perl程序员而使用的旧语法。

关于你的第二个问题,如果把字符串当作字符数组来对待是一个好习惯:是的,如果它对你的任务有用,那么就这样做。在像C这样的低级语言中,字符串是字符的数组,所以这样对待它们是很自然的。

但是请记住PHP对unicode的支持很差。因此,如果您的字符串是多字节编码(即UTF-8),这可能不会像预期的那样工作。在这种情况下最好使用多字节函数

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

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

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

你可以写"Hello, I am a character of a string $string{0}"

但是你不能写"Hello, I am a character of a string $string[0]"

必须使用字符串连接符号,如
"你好,我是字符串中的一个字符"$ string [0];