在我的localhost [PHP Version 5.5.9-1ubuntu4.5]上,此代码正常运行:
array($userName => ['score' => $score]);
此代码也在运行:
$this->Auth->user()['id']
但在生产服务器上[PHP Version 5.3.3-7 + squeeze23]在这两种情况下我都遇到了错误:
错误:致命错误(4):语法错误,意外'['
发生了什么事?我怎样才能以最简单的方式解决它? (因为更改项目中的所有数组是非常不切实际的,我甚至不确定如何使用Auth管理第二种情况......)
答案 0 :(得分:4)
第一个是因为the new []
syntax for instantiating arrays only works in 5.4 and above。因此,请将其替换为array()
:
// 5.4+ only:
array($userName => ['score' => $score]);
// 5.3 (and earlier) and 5.4+
array($userName => array('score' => $score));
第二个是与accessing arrays returned from functions不同的5.4功能,你应该使用一个临时变量:
// 5.4+ only:
$this->Auth->user()['id']
// 5.3 (and earlier) and 5.4+:
$result = $this->Auth->user()
$result[id]
或者,首先,将您的生产服务器升级到比您正在使用的四五岁版本更现代的PHP版本。为了节省更多这些令人头疼的问题,您需要这样做或者在5.3中开始本地开发。 (如果您需要执行后者,我会考虑虚拟化您的开发设置,因此您可以在虚拟框中针对较旧的生产系统针对5.3进行开发。)
答案 1 :(得分:3)
答案 2 :(得分:1)
用于阵列的squarebracket语法在php v.5.4中介绍。使用函数或方法的返回值
也是如此