11

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

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

4

3 回答 3

18

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

引用手册

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

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

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

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

于 2013-01-20T10:55:41.880 回答
1

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

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

您必须使用字符串连接符号,例如
"Hello, I am a character of a string" 。$字符串[0];

于 2016-11-18T01:06:21.500 回答
0

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

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

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

于 2021-04-16T09:10:57.063 回答