我有两个关联数组,如下所示:
$prod1 = (
[name] = 'John',
[address] = 'Milky way',
[city] = 'Miami',
);
$prod2 = (
[address] = 'Not so milky way'
);
$ prod1 总是拥有相同类型的元素(姓名,地址,城市),但 $ prod2 可能包含所有元素元素或其中一些
我想要的是替换 $ prod1 中与 $ prod2 中的元素匹配的元素中的值。在上面的示例中, $ prod2 包含地址,因此 $ prod1 中的地址应替换为 $ prod2中的地址(其余元素当然应保持原样)。
如何实现这一目标?
答案 0 :(得分:6)
array_merge
函数将为您执行此操作:
$prod_new = array_merge($prod1, $prod2);
如果输入数组具有相同的字符串键,则该键的后一个值将覆盖前一个键。
或者,你可以使用the +
operator,它会给你相同的结果:
$prod_new = $prod1 + $prod2;
+
运算符返回附加到左侧数组的右侧数组;对于存在于两个数组中的键,将使用左侧数组中的元素,并且将忽略右侧数组中的匹配元素。
答案 1 :(得分:0)
foreach($prod2 as $key => $val)
{
$prod1[$key] = $val;
}
答案 2 :(得分:0)
尝试类似的事情:
$prod1 = array(
name => 'John',
address => 'Milky way',
city => 'Miami',
);
$prod2 = array(
address => 'Not so milky way'
);
foreach ($prod2 as $key=>$value) {
$prod1[$value] = $value;
}
var_dump($prod1);
享受:)