假设我们有这段代码$test = 'text';
。 echo $test[0]
和echo $test{0}
之间有什么区别?结果是一样的。
处理包含类似字符数组的字符串的变量是一个好习惯吗?
答案 0 :(得分:14)
好的,我会将我的评论汇总为答案:
引用手册
也可以使用大括号访问字符串,如$ str {42}中所示 同样的目的。但是,从PHP 7开始,不推荐使用此语法。 改为使用方括号。
此外,虽然没有文档,但{}访问器也适用于数组,这使得$ foo {$ bar}和$ foo [$ bar]完全相同。为了方便Perl程序员,它只是旧语法。
关于你的第二个问题,如果将字符串视为一个字符数组是好的做法:是的,如果它对你的任务有用,那就去做吧。在像C这样的低级语言中,字符串是字符数组,因此很自然地将它们视为那样。
但请记住,PHP具有糟糕的unicode支持。因此,如果您的字符串采用多字节编码(即UTF-8),则可能无法按预期工作。在这种情况下,最好使用multibyte functions。
答案 1 :(得分:1)
你可以写"你好,我是字符串$ string {0}的字符"
但是你不能写"你好,我是字符串$ string的字符[0]"
你必须使用像
一样的字符串连接符号
"你好,我是一个字符串的字符" 。 $串[0];
答案 2 :(得分:0)
https://www.php.net/manual/en/language.types.string.php
<块引用>使用 {} 语法访问字符串文字中的字符已在 PHP 7.4 中弃用。这已在 PHP 8.0 中删除。
因此,总是使用方括号 $str[0]
。
答案 3 :(得分:-1)
{0}
是给定字符串的第一个字符的简写(因为php从零开始) - 所以$test{0}
将返回t
[0]
将获得数组中的第一个条目(再次,因为php是从零开始的)。
奇怪的是,php将字符串视为字符数组,因此text
的第一个字符与说明相同:
$test = array('t', 'e', 's', 't');
echo $test[0];
// t