【发布时间】: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