我有一个Form对象$ form。其中一个变量是Field对象,它表示所有字段并且是一个数组(例如$this->field['fieldname']
)。 getter是$form->fields()
。
要访问特定的字段方法(例如,使其成为必需),我使用$form->fields()['fieldname']
,它在带有wamp的localhost上工作但在服务器上抛出此错误:
Parse error: syntax error, unexpected '[' in (...)
我在服务器上安装了PHP 5.3,因为我重新安装了wamp而忘了将其更改回5.3,wamp运行PHP 5.4。所以我猜这就是错误的原因。
如何通过PHP 5.3的数组键访问返回数组的对象方法?
答案 0 :(得分:3)
从PHP 5.4开始,可以进行数组解除引用,而不是5.3
PHP.net:
从PHP 5.4开始,可以直接对函数或方法调用的结果进行数组取消引用。之前只能使用临时变量。
答案 1 :(得分:2)
问题中描述的数组解除引用是一个仅在PHP 5.4中添加的功能。 PHP 5.3无法做到这一点。
echo $form->fields()['fieldname']
因此,此代码将在PHP 5.4及更高版本中运行。
为了在PHP 5.3中实现这一功能,您需要执行以下操作之一:
使用临时变量:
$temp = $form->fields()
echo $temp['fieldname'];
将fields数组输出为对象属性而不是方法:
即这......
echo $form->fields['fieldname']
...完全有效。
或者,当然,您可以将服务器升级到PHP 5.4。请记住,5.3将被宣布为相对较快的生命终止,现在5.5已经被释放,所以你无论如何都要迟早升级;也许这是你的提示? (并且不用担心;从5.3到5.4的升级路径非常简单;除了被弃用的东西之外,没有什么会真正破坏)
答案 2 :(得分:1)
如上所述,阵列解除引用只能在5.4或更高版本中使用。 但是您可以保存对象,然后再访问字段:
$fields=$form->fields();
$value=$fields['fieldname']
...
AFAIK没有其他选择。