更改关联数组中的特定元素

时间:2012-12-06 00:45:07

标签: php arrays element associative-array

我有两个关联数组,如下所示:

$prod1 = (
    [name] = 'John',
    [address] = 'Milky way',
    [city] = 'Miami',
);

$prod2 = (
    [address] = 'Not so milky way'
);

$ prod1 总是拥有相同类型的元素(姓名,地址,城市),但 $ prod2 可能包含所有元素元素或其中一些

我想要的是替换 $ prod1 中与 $ prod2 中的元素匹配的元素中的值。在上面的示例中, $ prod2 包含地址,因此 $ prod1 中的地址应替换为 $ prod2中的地址(其余元素当然应保持原样)。

如何实现这一目标?

3 个答案:

答案 0 :(得分:6)

array_merge函数将为您执行此操作:

$prod_new = array_merge($prod1, $prod2);

来自the documentation

  

如果输入数组具有相同的字符串键,则该键的后一个值将覆盖前一个键。

或者,你可以使用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);

享受:)