Php 方括号语法错误

Php square brackets syntax error

在我的本地主机 [PHP 版本 5.5.9-1ubuntu4.5] 上,此代码有效:

array($userName => ['score' => $score]);

并且此代码也有效:

$this->Auth->user()['id']

但是在生产服务器 [PHP 版本 5.3.3-7+squeeze23] 上,在这两种情况下我都遇到了错误:

Error: Fatal Error (4): syntax error, unexpected '['

这是怎么回事?我怎样才能以最简单的方式修复它? (因为更改项目中的所有数组是非常不切实际的,我什至不确定如何使用 Auth 管理第二种情况...)

直到 php 版本 5.4

才支持该语法

你可以在这里看到:

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

[=12v 中引入了数组的方括号语法。 5.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));

第二个是不同的 5.4 功能,accessing arrays returned from functions,您应该在其中使用临时变量:

// 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 的虚拟盒子中开发。)