2017-08-29 20 views
0

我有以下陣列:PHP拼合一個多維數組,同時保持索引相關使用相同的按鍵

(
[0] => Array 
    (
     [items] => Array 
      (
       [0] => Array ([snippet] => text1) 
       [1] => Array ([snippet] => text2) 
       [2] => Array ([snippet] => text3) 
      ) 
    ) 

[1] => Array 
    (
     [items] => Array 
      (
       [0] => Array ([snippet] => text4) 
       [1] => Array ([snippet] => text5) 
       [2] => Array ([snippet] => text6) 
      ) 

    ) 
) 

,我希望把它變成這樣:

Array 
(
[items] => Array 
    (
     [0] => Array ([snippet] => text) 
     [1] => Array ([snippet] => text) 
     [2] => Array ([snippet] => text) 
     [3] => Array ([snippet] => text) 
     [4] => Array ([snippet] => text) 
     [6] => Array ([snippet] => text) 
    ) 
) 

該陣列可以有更多的「item」圖層和「snippet」圖層可以包含其中的數組,我還需要保留第一個「items」數組的索引,並如上所示繼續處理,剩下的部分我無法弄清楚,任何幫助,將不勝感激。

回答

4

您可以使用array_merge_recursivesplat operator來實現這一目標:

$arr = [ 
    [ 
     'items' => [['snippet' => 'text1'],['snippet' => 'text2'],['snippet' => 'text3']] 
    ], 
    [ 
     'items' => [['snippet' => 'text4'],['snippet' => 'text5'],['snippet' => 'text6']] 
    ] 
]; 

print_r(array_merge_recursive(...$arr)); 

給出:

Array 
(
    [items] => Array 
     (
      [0] => Array 
       (
        [snippet] => text1 
       ) 

      [1] => Array 
       (
        [snippet] => text2 
       ) 

      [2] => Array 
       (
        [snippet] => text3 
       ) 

      [3] => Array 
       (
        [snippet] => text4 
       ) 

      [4] => Array 
       (
        [snippet] => text5 
       ) 

      [5] => Array 
       (
        [snippet] => text6 
       ) 

     ) 

) 

此外,這是筆誤?該陣列的

  1. 指數是0,1,2,3,4,6 - >失蹤5

  2. 文本1,文本2,文字3 ...被替換爲剛剛text

+0

這個工程很漂亮!你能解釋3個點在「... $ arr」上做什麼嗎? –

+0

這就是所謂的'splat'運算符,解包參數:http://blog.programster.org/php-splat-operator – Thamilan

+1

優秀,學到了新東西,非常感謝! –

相關問題