【问题标题】:PHP Array index error [duplicate]PHP数组索引错误[重复]
【发布时间】:2013-03-12 14:12:41
【问题描述】:

我在我的计算机上本地安装了 Apache/PHP/MySQL 以快速测试内容。我目前正在做的事情之一是一个六边形图表,用于通过 GD 库动态创建的游戏中的统计数据。

在我的笔记本电脑上一切正常,因为我得到了一个不错的结果。

但是,当我将它部署到我购买的服务器上时,我遇到了语法错误:

Parse error: syntax error, unexpected '['

来自此声明:

$hexstat = new CL2HexStatPoints( 
    CL2StatsRepository::GetClassesFromJson()[$id], <- *error here*
    new CHexagon( CVector2::Create( constant("RADIUS"), constant("RADIUS") ) 
    ) 
);

它似乎不喜欢那里的索引运算符。该函数本身解析一个 json 文件并返回一个对象数组,其中包含有关播放器类的属性。我已经通过使用 var_dump 确认它确实是一个数组。但是,如果我这样编程:

$array = CL2StatsRepository::GetClassesFromJson();
var_dump( $array[$id] ); // this is ok
var_dump( CL2StatsRepository::GetClassesFromJson()[$id] ); // this isn't

第一个语句可以,第二个语句不行。我工作电脑上的PHP版本是5.4.12,服务器上的PHP版本是5.3.22。我假设在版本之间涉及操作员的某些事情发生了变化,或者我可能需要更改一个设置。我还没有真正能够找到任何信息或者搜索,有没有人可以解释为什么会这样?非常感谢。

编辑:我已经修复了与旧 PHP 版本兼容的代码,所以从现在开始我会牢记这一点。如果有人有兴趣看到它真正起作用:http://www.qzmpox.nl/l2/hexagon/hexagontest.php

【问题讨论】:

  • 你的假设是正确的。取消引用函数调用仅在 PHP 5.4 中引入。附带说明一下,这就是为什么您希望开发环境尽可能与生产环境相似的原因。
  • 此语法已添加到 PHP 5.4 中。见here
  • 感谢 Gorden、Juco 和 Rafal。我实际上刚刚购买了主机,所以我认为它已经拥有最新版本。我现在只是检查了 PHP 版本。谢谢你们的帮助。
  • 谢谢michi,我已经在帖子中添加了工作脚本的链接!

标签: php arrays operator-keyword


【解决方案1】:

在 PHP

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-19
    • 1970-01-01
    • 2018-04-14
    • 2011-11-25
    • 2015-06-13
    • 1970-01-01
    • 2020-05-27
    相关资源
    最近更新 更多