PHP - 用另一个数组替换数组的值

时间:2010-09-30 04:30:37

标签: php arrays replace

有没有办法可以用一个具有相同键的另一个数组替换一个数组的值?

$arr1 = Array
        (
            [key1] => var1
            [key2] => var2
        )
$arr2 = Array
        (
            [key1] => var3
            [key2] => var4
        )

我想将$ arr1的值更改为$ arr2中的值,我这样做了大约10次,我可以逐行完成,但我想知道是否有更简单的方法。 谢谢!

5 个答案:

答案 0 :(得分:7)

如果数组1和2中的键相同:

$arr1 = $arr2;

如果阵列2的所有键都保证在数组1中(数组2是数组1的子集):

$arr1 = array_merge($arr1, $arr2);

如果数组2的某些键不在数组1中,并且您只想要替换数组1中的键(数组2不是数组1的子集,并且您只想合并交叉部分):

$arr1 = array_merge($arr1, array_intersect_key($arr2, $arr1));

答案 1 :(得分:4)

检查php的array_merge()功能。

$arr1 = array_merge($arr1,$arr2);

答案 2 :(得分:0)

如果您需要保留数组的顺序,请使用array_replace

    $a = array( 'a' => 1, 'b' => 2,  'c' => 3  );
    $b = array(           'b' => 20, 'c' => 30 );

    $r = array_replace($a, $b)

    // $r = array( 'a' => 1, 'b' => 20, 'c' => 30 );

答案 3 :(得分:0)

只需使用替换功能。

$arr1 = array_replace($arr1, $arr2);

或更好的如果你想处理多维数组,使用递归替换。

$arr1 = array_replace_recursive($arr1, $arr2);

有关详细信息,请查看以下链接array_replace()array_replace_recursive()

答案 4 :(得分:-2)

  

编辑笔记:   此答案之前建议使用array_combine作为执行此操作的方法。然而,正如几个人所指出的那样,不是解决这个问题的正确方法。编辑此答案与实际解决问题更为相关。


要使用另一个数组的值替换一个数组的值,可以使用PHP array_replace方法。这假设关联数组具有相同的键。

PHP文档解释array_replace,如下所示:

  

array_replace()将array1的值替换为以下每个数组中具有相同键的值。如果第一个数组中的键存在于第二个数组中,则其值将替换为第二个数组中的值。如果密钥存在于第二个数组中,而不存在于第一个数组中,则它将在第一个数组中创建。如果一个键仅存在于第一个数组中,它将保持原样。如果传递几个数组进行替换,它们将按顺序处理,后面的数组将覆盖先前的值。


此外,这篇文章:https://softonsofa.com/php-array_merge-vs-array_replace-vs-plus-aka-union/包含一个方便的图形,有助于解释array_merge,array_replace和数组联合运算符(+)之间的区别。如果您愿意,请将帖子读取,我已将下面的图片包含在内以供参考:

from: https://softonsofa.com/php-array_merge-vs-array_replace-vs-plus-aka-union/