Php 通过方法访问阵列

Php 通过方法访问阵列,php,Php,为什么在PHP5.3.8中: $obj->foo()['bar']; // syntax error $obj->foo()->['bar']; // valid 但在PHP5.4.9中,情况正好相反: $obj->foo()['bar']; // valid $obj->foo()->['bar'] // syntax error $obj->foo()['bar']在PHP>=5.4.0中有效 $obj->foo()->['bar']在任何版本中都无效

为什么在
PHP5.3.8
中:

$obj->foo()['bar']; // syntax error
$obj->foo()->['bar']; // valid
但在
PHP5.4.9中,情况正好相反:

$obj->foo()['bar']; // valid
$obj->foo()->['bar'] // syntax error
$obj->foo()['bar']在PHP>=5.4.0中有效

$obj->foo()->['bar']
在任何版本中都无效,即使您添加了所需的

因此,在5.4.0之前的版本中,第一行将出现解析错误,该错误将停止执行,而不会在下一行显示解析错误

在5.4.0及更高版本中,第一行可以工作,但第二行会出现解析错误。因此,如果您将它们反转,您将始终在任何版本中得到
$obj->foo()->['bar']
的解析错误。

$obj->foo()['bar']在PHP>=5.4.0中有效

$obj->foo()->['bar']
在任何版本中都无效,即使您添加了所需的

因此,在5.4.0之前的版本中,第一行将出现解析错误,该错误将停止执行,而不会在下一行显示解析错误


在5.4.0及更高版本中,第一行可以工作,但第二行会出现解析错误。因此,如果您将它们反转,您将始终在任何版本中得到
$obj->foo()->['bar']
的解析错误。

您的第一个示例从未有效过

$obj->foo()->['bar']; // is invalid in any PHP implementation 
但是,使用方法链接支持:如果
$obj->foo()
返回一个带有
条属性的对象,这将起作用:

$obj->foo()->bar;

你的第一个例子从来都不正确

$obj->foo()->['bar']; // is invalid in any PHP implementation 
但是,使用方法链接支持:如果
$obj->foo()
返回一个带有
条属性的对象,这将起作用:

$obj->foo()->bar;
支持

$obj->foo()['bar'];
PHP5.4.0中加入了对函数数组解引用的支持,仅从该版本中添加

这一有用的页面解释了这一点: 支持

$obj->foo()['bar'];
PHP5.4.0中加入了对函数数组解引用的支持,仅从该版本中添加

这一有用的页面解释了这一点: 示例
$obj->foo()->['bar']
在任何PHP版本中都是无效的

也许你把它和语法弄错了,比如
$obj->foo()->{'bar'}

示例
$obj->foo()['bar']
在PHP>=5.4.0;中有效

示例
$obj->foo()->['bar']
在任何PHP版本中都是无效的

也许你把它和语法弄错了,比如
$obj->foo()->{'bar'}


示例
$obj->foo()['bar']
在PHP>=5.4.0;中有效

->['bar']
语法在PHP 5.3中的任何上下文中都无效。可能与my bad的语法重复。不是打字错误。我刚刚弄糊涂了
->['bar']
语法在PHP5.3的任何上下文中都是无效的。可能与我的错误重复。不是打字错误。我只是糊涂了