数组合成关联数组

时间:2011-12-28 22:48:25

标签: php associative-array

我需要将关联数组的值添加到另一个数组中。

$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));

}

5 个答案:

答案 0 :(得分: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);

与array_merge不同,这将保留数字键......但要注意重复键

答案 1 :(得分:0)

你需要array_merge。

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

请注意重复键的处理:

将一个或多个数组的元素合并在一起,以便将一个值的值附加到前一个数组的末尾。它返回结果数组。 如果输入数组具有相同的字符串键,则该键的后一个值将覆盖前一个键。但是,如果数组包含数字键,则后面的值不会覆盖原始值,但会附加。 使用数字键的输入数组中的值将使用从结果数组中的零开始的递增键重新编号。

修改

我可能没有正确阅读这个问题 - 请澄清......

您是否希望单个数组中的所有数组项,或者原始数组中的数组作为项(数组数组)?

IE: c =数组(a = a,b = b,c = c等)< - 可以用array_merge($ a,$ b,$ c等)来完成

vs

c = array(     b =数组(a = a,b = b,c = c等),     a =数组(d = d,e = e等) )< - 应该通过在这一端连接下一个数组来完成(并完全跳过$ c):

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

//or

$c = array();
foreach ($possible_opp_action as $sub) {
    $c[] = $sub;    
}

答案 2 :(得分:0)

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

答案 3 :(得分:0)

尝试

$c = array_merge($b, $a)

http://php.net/manual/es/function.array-merge.php

中的帮助

答案 4 :(得分: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);