3

次のように見える2つの連想配列があります。

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

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

$prod1は常に同じ種類の要素(名前、住所、都市)を持っていますが、$prod2にはすべての要素または一部の要素を含めることができます

私が望むのは、 $prod2の要素と一致する$ prod1の要素の値を置き換えることです。上記の例では、 $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 に答える