PHP - 用另一个数组替换数组的值
Posted
技术标签:
【中文标题】PHP - 用另一个数组替换数组的值【英文标题】:PHP - replace values of array with another array 【发布时间】:2011-04-19 04:05:28 【问题描述】:有没有办法可以将一个数组的值替换为另一个具有相同键的值?
$arr1 = Array
(
[key1] => var1
[key2] => var2
)
$arr2 = Array
(
[key1] => var3
[key2] => var4
)
我想将 $arr1 的值更改为 $arr2 中的值,我这样做了大约 10 次,我可以逐行执行,但我想知道是否有更简单的方法。 谢谢!
【问题讨论】:
【参考方案1】:检查php的array_merge()
函数。
$arr1 = array_merge($arr1,$arr2);
【讨论】:
不会只创建双键吗?编辑:成功了,谢谢! 这取决于您对数组中的键使用什么。字符串键将采用第二个值,数字键追加。 好的,谢谢!当它让我 XD 时,我会在 9 分钟内点击这个作为答案【参考方案2】:如果数组 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));
【讨论】:
这种方式也可以(第一种方式),但下一步将用 $arr3 中的值替换 $arr2,所以我认为 array_merge 会更好 @Diesal 如果$arr1 = $arr2
确实适合您,那么您真的不想像替换变量 批发那样合并 数组。也许通过更多代码,我们可以推荐一种更好的方法来做你想做的事情。
最后它回到 mysql 中的行,我实际上用下一行替换了一行列的值。我还没有完全写出来。所以我只能给你atm【参考方案3】:
如果需要保留数组的顺序,请使用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 );
【讨论】:
【参考方案4】:只需使用替换功能。
$arr1 = array_replace($arr1, $arr2);
如果要处理多维数组,最好使用递归替换。
$arr1 = array_replace_recursive($arr1, $arr2);
有关详细信息,请查看这些链接array_replace()、array_replace_recursive()
【讨论】:
【参考方案5】:编辑说明: 这个答案之前建议使用
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 和数组联合运算符 (+
) 之间的区别。如果您愿意,请阅读帖子,我已将下面的图片包含在内以供参考:
【讨论】:
array_merge() as NullUserException 发布可能是更好的方法。如果键相同,任何一种方法都可以工作。 对不起,这是错误的。它将创建array('var1' => 'var3', 'var2' => 'var4')
@Felix - 感谢您了解这一点 - 我已纠正。这绝对是执行 OP 想要的错误方法。这是使用array_combine 的正确方法,array_combine(array_flip($arr1), $arr2);
以上是关于PHP - 用另一个数组替换数组的值的主要内容,如果未能解决你的问题,请参考以下文章