【问题标题】:Php square brackets syntax error [duplicate]php方括号语法错误[重复]
【发布时间】:2015-03-02 11:05:51
【问题描述】:

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

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

而且这段代码也可以工作:

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

但在生产服务器上 [PHP 版本 5.3.3-7+squeeze23] 在这两种情况下我都有一个错误:

错误:致命错误(4):语法错误,意外'['

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

【问题讨论】:

标签: php arrays cakephp square-bracket


【解决方案1】:

直到 php 版本 5.4 才支持该语法

你可以在这里看到:

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

【讨论】:

  • 好的,现在很清楚了。多谢! ......事实上我害怕这个答案。固定阵列的夜晚就在我面前;/
【解决方案2】:

数组的方括号语法是在 php v. 5.4 中引入的。函数或方法的返回值的使用也是如此

【讨论】:

    【解决方案3】:

    第一个是因为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 进行开发。)

    【讨论】:

    • 非常感谢您的解决方案! (尤其是第二个:))
    猜你喜欢
    • 2012-08-08
    • 2017-11-05
    • 2021-11-20
    • 2012-11-03
    • 1970-01-01
    • 1970-01-01
    • 2016-08-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多