有没有办法可以用一个具有相同键的另一个数组替换一个数组的值?
$arr1 = Array
(
[key1] => var1
[key2] => var2
)
$arr2 = Array
(
[key1] => var3
[key2] => var4
)
我想将$ arr1的值更改为$ arr2中的值,我这样做了大约10次,我可以逐行完成,但我想知道是否有更简单的方法。 谢谢!
答案 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和数组联合运算符(+
)之间的区别。如果您愿意,请将帖子读取,我已将下面的图片包含在内以供参考: