数组合并/替换

时间:2009-05-15 00:53:32

标签: php arrays

我有两个数组:

Array
(
    [2005] => 0
    [2006] => 0
    [2007] => 0
    [2008] => 0
    [2009] => 0
)

Array
(
    [2007] => 5
    [2008] => 6.05
    [2009] => 7
)

我想合并这两个数组,这样如果第二个数组中存在一个值,它就会覆盖第一个数组的值。因此得到的数组将是:

Array
(
    [2005] => 0
    [2006] => 0
    [2007] => 5
    [2008] => 6.05
    [2009] => 7
)

感谢您的帮助。

更新: 这是我最好的尝试,但它非常不成功:

    $final = '';
    foreach ($years as $k => $v){
        if (in_array($k,$values)){
            $final .= $values[$k] . '|';
        }else{
            $final .= $k[$v] . '|';
        }

    }

    echo "final = $final";

5 个答案:

答案 0 :(得分:29)

正如我刚刚学到的那样,PHP有一个array union operator就是这样做的:

$result = $a + $b;

其中$ a是具有您想要优先使用的值的数组。 (所以在你的例子中,这意味着第二个数组是“$a”。

答案 1 :(得分:9)

就这么简单:

$new_array = array_replace(array_1,array_2);

the php manual page

答案 2 :(得分:3)

我改变了一点内部数组, 感谢你的代码在第一步给出了一个想法:)

function combine($a1, $a2) {
    foreach($a2 as $k => $v) {
        if(is_array($v)) {
            if(!isset($a1[$k]))
                $a1[$k] = null;

            $a1[$k] = combine($a1[$k], $v);
        } else {
            $a1[$k] = $v;
        }
    }
    return $a1;
}

答案 3 :(得分:2)

不能只是这么简单:

$new_array = array_unique(array_merge($ar1,$ar2));

也许我错过了什么或者我疯了。

答案 4 :(得分:1)

我对PHP并不熟悉,但有点像:

foreach ($array2 as $i => $value) {
  $array1[$i] = $value;
}