2011-12-28 90 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);