2013-03-22 101 views
0

我在本地计算机上安装了Apache/PHP/MySQL,以便快速测试所有内容。我目前正在研究的一件事是通过GD库动态创建的统计数据的六边形图表。PHP数组索引错误

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

然而,当我将其部署到我买我得到一个语法错误服务器:

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 

第一个声明是OK,第二个不是。我在工作计算机上使用的PHP版本是5.4.12,服务器上的PHP版本是5.3.22。我假设在版本之间涉及操作员的内容发生了变化,或者可能需要更改一个设置。我还没有真正能够找到任何信息或者四处搜寻,有没有人能够揭示这是为什么?非常感谢。

编辑:我已经修复了与旧版PHP兼容的代码,因此从现在开始我会记住这一点。如果任何人希望看到它真正的工作:http://www.qzmpox.nl/l2/hexagon/hexagontest.php

+1

你的假设是:正确。函数调用的解引用仅在PHP 5.4中引入。另一方面,这就是为什么你想让你的开发环境尽可能接近你的生产环境。 – Gordon 2013-03-22 16:21:45

+1

此语法已添加到PHP 5.4中。见[这里](http://php.net/manual/en/language.types.array.php#example-88) – juco 2013-03-22 16:22:07

+0

感谢Gorden,Juco和下面的Rafal。我其实刚刚购买了主机,所以我认为它已经有最新版本。我只是刚刚检查了PHP版本。谢谢你们的帮助。 – 2013-03-22 16:26:01

回答

1

在PHP < 5.4您不能立即访问结果的“索引”,这就是为什么代码第二件不能在你的服务器上运行