2010-08-03 56 views
2

我有一個數組「$ ABC」,其具有9個元素,如: -串聯在許多一些數組元素在PHP

Array 
(
    [a] => Jack 
    [b] => went 
    [c] => up 
    [d] => the 
    [e] => hill 
    [f] => but 
    [g] => never 
    [h] => came 
    [i] => back 
) 

現在我需要Concat的僅從「b」的索引開始的4個元件僅限於「e」索引。但我不知道該怎麼做。在所有數組元素被連接的情況下,我使用PHP的「implode()」函數。

任何幫助,非常感謝。

回答

3

您需要首先提取所需的值,然後使用implode。你可以使用array_slice

echo implode(" ", array_slice($abc, 1, 4)); 

這將產生went up the hill

如果你需要使用文字鍵,你需要更有創意。在你的情況下,它可能會通過陣列和最佳的只是環比,但你可以做也未嘗奇特:

echo implode(" ", array_intersect_key($abc, array_flip(range('b', 'e')))); 
+1

+1整潔使用array_intersect_key()和array_flip() – 2010-08-03 08:20:46

1
$test = array ('a' => 'Jack', 
       'b' => 'went', 
       'c' => 'up', 
       'd' => 'the', 
       'e' => 'hill', 
       'f' => 'but', 
       'g' => 'never', 
       'h' => 'came', 
       'i' => 'back' 
      ); 
$start = 'b'; 
$end = 'e'; 

$result = implode(' ',array_slice($test,array_search($start,array_keys($test)),array_search($end,array_keys($test))-array_search($start,array_keys($test))+1)); 
echo $result; 
+0

+1,爲這種動態使用陣列切片的很好的顯示方式,儘管人們必須首先徹底理解它。 – 2010-08-03 09:14:14

+0

絕對容易計算array_slice()函數以外的切片值;但我不得不承認Tatu聰明地使用了array_intersect_key()和array_flip() – 2010-08-03 09:17:50