我想学习如何组合两个具有相同键但不同值的关联数组,就像我们在jQuery中使用var options = $.extend(defaults, options);
$first = array("name"=>"John","last_name"=>"McDonald","City"=>"World"); //default values
$second = array("name"=>"Michael","last_name"=>"Jackson"); //user provided
$result = combine($first,$second);
//output array("name"=>"Michael","last_name"=>"Jackson","City"=>"World");
我正在寻找一些built-in
而不是编写一个全新的功能来提供此功能。当然,如果你有一些整洁的东西,请告诉我。
...谢谢
答案 0 :(得分:24)
$result = array_merge($first, $second);
只要你处理字符串键,array_merge完全符合你的要求。两个数组组合在一起,两个数组具有相同的键,$second
的值会覆盖$first
的值。
答案 1 :(得分:4)
答案 2 :(得分:2)
我认为array_merge()
或array_combine()
是您要搜索的功能。
答案 3 :(得分:0)
你可以迭代第二个数组并在第一个数组中设置每个元素
答案 4 :(得分:0)
我认为array_merge()
或array_combine()
是您正在寻找的功能
array_merge()
可用于合并进一步调用的两个数组。
和array_combine()
数组的键,其中包含另一个数组的值。
答案 5 :(得分:0)
如果您确切知道要覆盖的键,则可以像这样简单地进行操作 $ first ['name'] =“ jastin”; 否则,您必须使用array_merge
答案 6 :(得分:0)
我从来没有为这种(简单的)需求找到内置函数,所以我开发了一个自定义函数,以便用$ override数组覆盖$ default数组:
function array_override( $default, $override )
{
foreach( $default as $k=>$v )
{
if( isset( $override[$k] ) ) $default[$k] = $override[$k];
}
return $default;
}
如您所见,仅当在$ override数组上进行设置时,才会覆盖$ default中的值;否则,$ default值将保留在返回的数组中。