3

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

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

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

$prod1总是有相同类型的元素(name, address, city),但$prod2可以包含所有元素或其中一些元素

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

如何实现?

4

3 回答 3

6

array_merge功能将为您执行此操作:

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

文档中

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

或者,您可以使用operator +这将为您提供相同的结果:

$prod_new = $prod1 + $prod2;

运算符返回附加到左侧数组的+右侧数组;对于两个数组中都存在的键,将使用左侧数组中的元素,而忽略右侧数组中的匹配元素。

于 2012-12-06T00:46:44.213 回答
0
foreach($prod2 as $key => $val)
{
    $prod1[$key] = $val;
}
于 2012-12-06T00:47:22.740 回答
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);

享受 :)

于 2012-12-06T00:54:42.130 回答