2013-04-18 81 views
0

原來這個代碼我個人開發服務器上工作的函數返回值時:PHP語法錯誤訪問與[0]

$id = str_split(md5(mt_rand()), 16)[0]; 

但另一臺服務器上,(同一版本的Apache和PHP的,我不知道遠程php.ini的樣子),代碼拋出此錯誤:

Parse error: syntax error, unexpected '[' ... 

我「固定」的問題的代碼更改爲:

$id = str_split(md5(mt_rand()), 16); 
$id = $id[0]; 

然後再回到原來的嘗試追捕問題 - 但原來的代碼工作!爲什麼第一行代碼會引發語法錯誤?我試圖尋找解釋,但我不知道該怎麼稱呼這類問題。

+0

IIRC,PHP解析器完全是瘋狂和不表達這樣的事情在簡單來說表達式後跟'[0]'「;而不是「後跟'[0]'」。除此之外沒有更深層次的原因。 – Eevee

+0

[explode(' - ','foo-bar')\ [0 \](例如)]上的解析錯誤的可能的重複(http://stackoverflow.com/questions/2396782/parse-error-on-explode -foo-bar0-for-instance) –

回答

5

使用直接數組引用直到PHP 5.4才被添加。

你必須分配給一個臨時變量:

$arr = your_function(); 
$value = $arr[0]; 

見例#7這裏:http://php.net/manual/en/language.types.array.php

+0

這完全解釋了我的問題,謝謝! –