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

时间:2013-01-19 22:06:07

标签: php string

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

处理包含类似字符数组的字符串的变量是一个好习惯吗?

4 个答案:

答案 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