Php方括号语法错误

时间:2015-01-04 21:32:41

标签: php arrays cakephp square-bracket

在我的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管理第二种情况......)

3 个答案:

答案 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)

直到php版本5.4

才支持该语法

你可以在这里看到:

http://php.net/manual/en/language.types.array.php

答案 2 :(得分:1)

用于阵列的squarebracket语法在php v.5.4中介绍。使用函数或方法的返回值

也是如此