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的任何上下文中都是无效的。可能与我的错误重复。不是打字错误。我只是糊涂了