数组表示法中的 PHP 大括号

2022-08-30 12:17:29

我只是遇到了一个非常奇怪的php代码:

$oink{'pig'} = 1;
var_dump($oink);

$oink{'pig'} = '123123';
echo $oink{'pig'}; /* => 123123 */
echo $oink['pig']; /* => 123123 */

它的工作方式类似于数组,但在手册中没有提到。这是怎麽?


答案 1

手册中提到了它。 只是 § 使用方括号语法访问数组元素的替代语法。此方法从 PHP 7.4.0 开始弃用,从 PHP 8.0.0 开始不再受支持{}[]

注意:

在 PHP 8.0.0 之前,方括号和大括号可以互换使用来访问数组元素(例如 $array[42] 和 $array{42}在上面的例子中都会做同样的事情)。大括号语法从 PHP 7.4.0 开始被弃用,并且从 PHP 8.0.0 开始不再受支持。

字符串 § 字符串访问和字符修改也是如此:

通过使用方括号指定字符串后所需字符的从零开始的偏移量,可以访问和修改字符串中的字符,如 中所示。为此,可以将字符串视为字符数组。[...]$str[42]

注意:在 PHP 8.0.0 之前,出于相同的目的,也可以使用大括号访问字符串,如$str{42}。此大括号语法自 PHP 7.4.0 起已弃用,自 PHP 8.0.0 起不再受支持。


答案 2

根据对文档的评论,它只是另一种符号,可能设计为类似于Perl语法:http://www.php.net/manual/de/language.types.array.php#99015

更新:当这个答案最初发布时,PHP手册没有任何关于这种符号的官方信息。然而,到2014年,上面提到的评论已被删除,正如Pacerier的回答所说,该符号已在手册中正式提及。