我有两个数组:
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";
答案 0 :(得分:29)
正如我刚刚学到的那样,PHP有一个array union operator就是这样做的:
$result = $a + $b;
其中$ a是具有您想要优先使用的值的数组。 (所以在你的例子中,这意味着第二个数组是“$a
”。
答案 1 :(得分:9)
答案 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;
}