2011-09-29 39 views
1

我有一個數組$ arr,當我var_dump看起來像這樣。獲得第二個最後項目的最簡單方法是什麼(在這種情況下是「簡單」)。我不能做$ arr [4],因爲每個網址的項目數量可能會有所不同,而我總是隻想第二個。 (注意,是在年底,這將永遠是有一個額外的空字符串。)如何從此陣列中獲取此元素

array 
    0 => string 'http:' (length=5) 
    1 => string '' (length=0) 
    2 => string 'site.com' 
    3 => string 'group' 
    4 => string 'simple' 
    5 => string 'some-test-url' 
    6 => string '' (length=0) 
+1

爲什麼不直接問「我如何獲得一個網址的最後一個組件在一個字符串?」 [代替](http://mywiki.wooledge.org/XyProblem)? –

+0

請注意,倒數第二和'$ arr [4]'不是一回事。除非我瘋了,否則我會認爲'$ arr [4]'是倒數第三。 –

+0

@伊格納西奧·巴斯克斯 - 艾布拉姆斯這不是最後一個。如果您將最後一個空字符串計爲一個項目,那麼這是倒數第二,甚至是倒數第三。 – sameold

回答

3

只要它不是一個鍵或散列陣列,它有兩件以上商品...

$arr[count($arr) - 2]; 

注意:我倒數第二次的解釋是從結尾第二次。這可能與您的不同。如果是,則減去3.

1
$second_last = count($array) - 3; 

$value = $array[$second_last]; 
2

獲取計數並減去3?

$arr[count($arr)-3] 
2
if (!empty($arr) && count($arr)>1){ 
    //or > 2, -3 for your extra ending 
    $val = $arr[count($arr)-2]; 
} 

應該幫助你。

+2

+1用於檢查... -1用於調用count()兩次。 –

+0

也應該是 - 3 –

1
$arrayLen=count($arr); 
echo $arr[$arrayLen-2]; 
0

另一種替代方案:

echo current(array_slice($data, -3, 1));