2016-10-06 53 views
0

我想合併數組,但想要交替順序。合併數組值,交替

$combined = array_merge($vars,$mods); 

給我:一,二,三,1,2,3 ...

我想:一,1,二,二,三,3 ...

有沒有辦法做到這一點?

+0

如果什麼陣列具有不同數量的項目?只需將大數組中的所有額外數據推到結果的最後? –

+0

在我的表單中,這兩個字段的設置都是爲了使$ vars數組中的每個條目在$ mods數組中都有相同的條目。兩者將始終具有相同數量的值。 –

+0

首先,你的陣列是什麼?請提供更多背景。 – timmyRS

回答

3

您可以使用for循環,並引用您正在組合的每個數組的索引。

$l = count($vars); 
for ($i=0; $i < $l; $i++) { 
    $combined[] = $vars[$i]; 
    $combined[] = $mods[$i]; 
} 

在循環的每次迭代中,您將追加每個原始數組中的一個項目。這將實現交替效果。


正如史蒂夫指出,這可以更簡單地使用foreach來完成:

foreach ($vars as $i => $value) { 
    $combined[] = $value; 
    $combined[] = $mods[$i]; 
} 
+0

我建議將它作爲一個函數來構建,以便在需要時可以在多個位置使用它。 –

+0

完美的作品,謝謝! –

+0

如果兩個數組中的鍵總是連續的,那麼可以用'foreach($ vars as $ i => $ value)替換前兩行{' – Steve