2014-07-24 45 views
1

我在質疑自己,爲什麼這個工作?爲什麼這個有效? PHP函數直接數組值

$key = 'question_1'; 
$key = explode('_', $key)[1]; 
var_dump($key); 

Result: string(1) "1" 

我的一個同事使用這個,但是這是怎麼稱呼?

+1

我們不知道爲什麼*你以前沒有見過這個,但它在很多語言中被廣泛使用,被稱爲* array dereferencing *。實際上PHP已經很晚了。 – deceze

+2

它被稱爲[數組解引用](http://php.net/manual/en/migration54.new-features.php)。您之前沒有看到它,因爲許多系統運行<5.4,因此沒有此功能 – kero

+2

5.4+中的有效語法。如果你一直堅持5.3,你將不會看到它。 – bcmcfc

回答

7

這就是所謂的數組語法,你可以讀到它here:取消引用已添加

功能陣列,例如foo()[0]

的信息here另一個位:

作爲PHP 5.4的能夠陣列取消引用函數或方法調用直接的結果。之前只能使用臨時變量。

2

它爲什麼工作?因爲您使用PHP/5.4或更高版本:Function array dereferencing。在早期版本中,必須將結果存儲在一個變量能夠訪問各個位面前:

$key = 'question_1'; 
$key = explode('_', $key); 
$key = $key[1]; 
var_dump($key); 

雖然,對於這種特殊情況下,良好的老list()(可用自PHP/4)是一樣花哨:

$key = 'question_1'; 
list(,$key) = explode('_', $key); 
var_dump($key); 

在這一行上,PHP/5.5增加了一個新的變體:array and string literal dereferencing。這是相同的,除了數組/字符串文字(而不是函數調用)。

+1

這不是*文字*取消引用。 – deceze

+0

是的,對不起,我會盡快修復它。 –

+2

你不需要,我已經發布了一個答案。 –

相關問題