数组表示法中的 PHP 大括号
我只是遇到了一个非常奇怪的php代码:
$oink{'pig'} = 1;
var_dump($oink);
$oink{'pig'} = '123123';
echo $oink{'pig'}; /* => 123123 */
echo $oink['pig']; /* => 123123 */
它的工作方式类似于数组,但在手册中没有提到。这是怎麽?
我只是遇到了一个非常奇怪的php代码:
$oink{'pig'} = 1;
var_dump($oink);
$oink{'pig'} = '123123';
echo $oink{'pig'}; /* => 123123 */
echo $oink['pig']; /* => 123123 */
它的工作方式类似于数组,但在手册中没有提到。这是怎麽?
手册中提到了它。 只是 § 使用方括号语法访问数组元素的替代语法。此方法从 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 起不再受支持。
根据对文档的评论,它只是另一种符号,可能设计为类似于Perl语法:http://www.php.net/manual/de/language.types.array.php#99015
更新:当这个答案最初发布时,PHP手册没有任何关于这种符号的官方信息。然而,到2014年,上面提到的评论已被删除,正如Pacerier的回答所说,该符号已在手册中正式提及。