2011-12-28 104 views
0

我需要將關聯數組的值添加到另一個數組中。數組合併成關聯數組

$a = array(4=>2,5=>5); 
$b = arrray(array(0=>0,1=>4,2=>10,3=>1000),array()...); 

我很期待得到的是第三陣列($ C),如下圖所示,其中$ B的內容如下$ a的內容中選擇一個:

$c = array(array(4=>2,5=>5,0=>0,1=>4,2=>10,3=>1000),array(4=>2,5=>5....)); 

這是我已經寫入(不工作):

$c = array(); 
foreach ($possible_opp_action as $sub) { 
    $c[] = array_push($to_merge,array_values($sub)); 

} 
+0

關聯數組具有字符串鍵,您的示例陣列都具有數字鍵。 ..你能澄清你到底想要什麼嗎? – 2011-12-28 23:02:22

回答

1
$a = array(4=>2,5=>5); 
$b = array(array(0=>0,1=>4,2=>10,3=>1000), 
      array(0=>0,1=>40,2=>100,3=>2000), 
      array(4=>10) 
     ); 

$c = array(); 
foreach($b as $tmp) { 
    $c[] = $a+$tmp; 
} 

var_dump($c); 

$c = array_merge($b, $a) 

幫助不同於array_merge,這樣可以保持數字鍵...但要注意重複鍵

0

您需要array_merge。

http://us.php.net/manual/en/function.array-merge.php

注重復鍵的處理:

,使得一個值被附加到以前的一個的端用於合併一個或多個陣列的元件一起。它返回結果數組。 如果輸入數組具有相同的字符串鍵,則該鍵的後面的值將覆蓋前一個鍵。但是,如果數組包含數字鍵,則後面的值不會覆蓋原始值,但會被追加。 使用數字鍵輸入數組中的值將使用從結果數組中的零開始的遞增鍵重新編號。

編輯:

我可能不會看錯的問題 - 請澄清...

你想在一個陣列與原陣列的所有陣列項目,或數組作爲它的項目(一個數組數組)?

IE: C =數組(= A,B = B,C = C,等)< - 可以與array_merge進行($一個,$ B,$ c等)

VS

C =陣列( b =數組(= A,b = b,C = C,等),一個 =陣列(d = d,E = E等) )< - 應通過像這樣在末尾串聯下一個陣列來完成(並且完全跳過$ c):

$c[] = $b; 
$c[] = $a; 

//or 

$c = array(); 
foreach ($possible_opp_action as $sub) { 
    $c[] = $sub;  
} 
0
$c = array(); 
foreach ($b as $bb) { 
    $c[] = array_merge($a,$bb); 
} 
0

如果沒有原始形式需要$b

<?php 

$a = array(4=>2,5=>5); 
$b = array(array(0=>0,1=>4,2=>10,3=>1000),array()); 

foreach ($b as &$ref) { 
    $ref = $a + $ref; 
} 

var_dump($b); 

否則:

<?php 

$a = array(4=>2,5=>5); 
$b = array(array(0=>0,1=>4,2=>10,3=>1000),array()); 

$c = array(); 

foreach ($b as &$ref) { 
    $c[] = $a + $ref; 
} 

var_dump($c);