2010-08-03 58 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