2012-01-11 39 views
23

可能重複:
PHP syntax for dereferencing function result調用PHP爆炸並訪問第一個元素?

我有一個字符串,它看起來像1234#5678。現在我打電話這樣的:

$last = explode("#", "1234#5678")[1] 

它不工作,有一些語法錯誤...但在哪裏?我期望的是在$last中的5678。這不適用於PHP?

+3

這在PHP中不可行。 – 2012-01-11 11:26:36

+4

你將能夠在PHP 5.4中執行此操作(Array Dereferencing),而不是當前的5.3 – 2012-01-11 15:15:42

回答

26

當前PHP版本中不支持數組解引用(不幸)。但是你可以用list[docs]直接指定數組元素的變量:

list($first, $last) = explode("#", "1234#5678"); 

UPDATE

由於PHP 5.4(發佈01-MAR-2012),它支持array dereferencing

+3

,如果你在字符串中有很多值,那麼你可以使用 $ last = end(explode('#',$ string)); – 2013-02-26 11:11:06

+0

列表的替代是'list(,$ last)= ....'。那麼當你不需要它時,你將不會有第一個變量掛起。 – 2017-11-16 20:30:21

8

最可能的PHP會被語法混淆。只是explode結果分配給數組變量,然後在其上使用索引:

$arr = explode("#", "1234#5678"); 
$last = $arr[1]; 
+1

哇,這很糟糕:D ...好的,現在我知道了。 – EOB 2012-01-11 11:28:02

+0

snap!你會贏得:) – 2012-01-11 11:28:08

3

PHP可以稍微變暗。您可能需要在兩行上執行此操作:

$a = explode("#", "1234#5678"); 
$last = $a[1]; 
5

你不能做到這一點:

explode("#", "1234#5678")[1] 

因爲explode是一個函數,而不是一個數組。它肯定會返回一個數組,但是在PHP中,您不能將該函數視爲數組,直到它被設置爲數組。

這是如何做到這一點:

$last = explode('#', '1234#5678'); 
$last = $last[1]; 
6

這裏是如何得到它歸結爲一條線:

$last = current(array_slice(explode("#", "1234#5678"), indx,1));

哪裏indx是你在數組中想要的指數,在你例如它是1.