2013-03-22 96 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您不能立即訪問結果的「索引」,這就是爲什麼代碼第二件不能在你的服務器上運行