2010-06-23 41 views
2

不能換我解決此頭...如何在同一行中使用explode()時訪問數組索引?

說,我們爆炸整個事情就像這樣:

$提取物=爆炸( 'TRA-LA-LA',$ big_sourse);

然後我們要在索引1得到的值:

$光潔度= $提取物[1];

我的問題是如何一氣呵成,這樣說。類似的東西:

$ finish = explode('tra-la-la',$ big_sourse)[1]; //不起作用

像下面將工作就像一個魅力:

$結束=結束(爆炸( 'TRA-LA-LA',$ big_sourse));

//或

$光潔度= array_shift(爆炸( 'TRA-LA-LA',$ big_sourse));

但是,如果價值坐在中間某處呢?

+0

我不認爲有解決方案,就像你正在尋找。爲什麼你不想在之前將提取的數據存儲到數組中?爲什麼直接打電話?內存節約型問題? – 2010-06-23 07:17:32

+0

我只是喜歡end和array_shift的解決方案,所以我希望類似於那些值在中間的東西。順便說一句,記憶也可能是一個問題。 – 2010-06-23 07:28:32

+2

可能的重複[在函數調用訪問數組元素在PHP](http://stackoverflow.com/questions/2282051/access-array-element-from-function-call-in-php) – Gordon 2010-06-23 07:32:47

回答

7

Function Array Dereferencing已經在PHP 5.4中實現。對於舊版本,這是PHP解析器中的一個限制,修復了in here,所以我現在沒有辦法解決這個問題。

+0

最近解決了函數調用的解引用數組問題?什麼時候? – Gordon 2010-06-23 07:16:18

+0

@gordon:查看已添加的鏈接。 – 2010-06-23 07:18:57

+0

我不知道它已被修復!你有鏈接到這個修復程序宣佈的地方嗎? – 2010-06-23 07:26:05

1

類似的東西:

end(array_slice(explode('tra-la-la', $big_sourse), 1, 1)); 

雖然我不認爲這是更好/更清晰的/不是寫上兩行漂亮。

0

您可以使用list

list($first_element) = explode(',', $source); 

[1]實際上是數組中的第二個元素,不知道你是否真的意味着。如果是這樣,只需再添變數到列表構建體(和省略第一個如果願意的話)

list($first_element, $second_elment) = explode(',', $source); 
// or 
list(, $second_element) = explode(',', $source); 
+0

這是所有的樂趣和遊戲,直到有人試圖獲得第n個元素。 – 2010-06-23 07:25:28

+0

@ignacio:好吧,那麼最好保存數組,執行綁定檢查,然後檢索值。你可以隨時寫另一個函數;) – knittl 2010-06-23 07:53:29

0

我的建議 - 是的,我已經想通了的東西 - ,是使用允許的功能的額外agrument 。如果設置爲肯定的,則返回的數組將包含最大限制元素,最後一個元素包含字符串的其餘部分。所以,如果我們想要得到的,也就是說,在指數2的值(當然,我們確信,我們喜歡的值會在那裏事前),我們只是做如下:

$finish = end(explode('tra-la-la', $big_sourse, 3)); 

會爆炸返回一個包含最多三個元素的數組,所以我們'結束'到我們尋找的最後一個元素,索引爲2 - 並且完成了!

相關問題