gpt4 book ai didi

PHP 对象运算符优先级 (->)

转载 作者:行者123 更新时间:2023-12-04 16:09:26 25 4
gpt4 key购买 nike

我写了一些代码:

class a{
public $b=['f'=>'c'];
}
$a=new a;
$b='b';
echo $a->$b['f'];

当我使用cli时,它输出'c',但是当我使用apache http服务器时,抛出错误 Illegal string offset 'f' ,所以我不知道 -> 之间哪个优先级更高和 [ .没有关于 ->的介绍在 http://php.net .我的 PHP 版本是 5.6 并使用 windows 10。在 Linux cli 和 httpd 中将输出“c”

最佳答案

有关 -> 之间优先顺序的一般概念和 [ ,您可能需要查看 PHP7 迁移文档 here .
我知道你在谈论 PHP5,但迁移文档关注这一点,因为 PHP5 和 PHP7 之间的行为发生了变化。

回答您的问题,$foo->$bar['baz']被解释为 $foo->{$bar['baz']}在 PHP5 中。这意味着您的代码应该抛出错误,因为它正在尝试访问 $b['f']正在使用时 $b='b';$b的定义.

但是,在 PHP7 中它被解释为 ($foo->$bar)['baz'] ,所以在这里它应该像你期望的那样工作。

您确定您的 CLI 没有使用 PHP7 吗?

关于PHP 对象运算符优先级 (->),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45410769/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com