2015-01-05 67 views
0

我一直在使用Mamp進行本地開發,並且一直都很棒,直到我上傳到服務器。我將問題縮小到與php版本無關。 Mamp運行的是比服務器更新的版本。較低版本的php抱怨括號。爲什麼?

如果我在PHP 5.6.2(或5.5.X)上運行Mamp,我的代碼沒有問題。但是,如果我要做的就是改變爲毫安的喜好PHP版本PHP 29年3月5日,如果抱怨以下行的代碼:

$shipping = reset($arrShipOptions['options'])[0]['price']; 

的錯誤是:

語法錯誤,意想不到的「[ '

首先想到的是reset()可能是一個新函數。但根據http://php.net/manual/en/function.reset.php它已經可在PHP 4

可以額外的一雙眼睛請說明這一點。 謝謝

+0

這是因爲數組訪問!請參閱:http://php.net/manual/en/language.types.array.php 5.4及更高版本 – Rizier123

+3

由於數組解除引用在[PHP 5.4]之前不可用(http://php.net/ manual/en/migration54.new-features.php) –

+0

標記爲重複,但參考鏈接可以嗎? –

回答

3

在舊的PHP版本中,您必須將結果從reset(或任何其他函數)分配給變量,然後使用[]訪問它。

$shipping = reset($arrShipOptions['options']); 
$shipping = $shipping[0]['price']; 
+1

哇!我想這是一個簡單的問題,幾乎每個人都知道除了我以外的答案。謝謝您的幫助。 +1是最快的答案。當SO允許我時,將會標記爲正確。 –

0

該問題通過使用特徵可利用的形式引起PHP 5.4+稱爲

函數數組解除引用

http://php.net/manual/en/migration54.new-features.php的第三個特徵

解決方法是將代碼分成兩行:

$shipping = reset($arrShipOptions['options']); 
$shipping = $shipping[0]['price']; 
相關問題