假设我们有这段代码$test = 'text';
。echo $test[0]
和有什么区别echo $test{0}
?结果是一样的。
将包含字符串的变量视为字符数组是否是一种好习惯?
好的,我将汇总我的评论作为答案:
引用手册
出于相同目的,也可以使用大括号访问字符串,如 $str{42}。但是,从 PHP 7 开始不推荐使用此语法。请改用方括号。
此外,尽管没有记录,但 {} 访问器也适用于数组,这使得 $foo{$bar} 和 $foo[$bar] 完全等效。它只是为了方便 Perl 程序员的旧语法。
关于第二个问题,如果将字符串视为字符数组是一种好习惯:是的,如果它对您的任务有用,那就去做吧。在像 C 这样的低级语言中,字符串是字符数组,所以这样对待它们是很自然的。
但请记住,PHP 对 unicode 的支持很差。因此,如果您的字符串采用多字节编码(即 UTF-8),这可能无法按预期工作。在这种情况下,最好使用多字节函数。
你可以写“你好,我是字符串$string{0}的一个字符”
但是你不能写“你好,我是字符串$string[0]的一个字符”
您必须使用字符串连接符号,例如
"Hello, I am a character of a string" 。$字符串[0];
https://www.php.net/manual/en/language.types.string.php
PHP 7.4 已弃用使用 {} 语法访问字符串文字中的字符。这已在 PHP 8.0 中删除。
所以,总是使用方括号$str[0]
。