使用另一个关联阵列替换关联阵列中的元素


Replace elements in an associative array using another associative array

如何将值从一个数组分配到另一个数组?例如:

//array with empty value
$targetArray = array(
    'a' => '',
    'b' => '',
    'c' => '',
    'd' => ''
);
// array with non-empty values, but might be missing keys from the target array
$sourceArray = array(
    'a'=>'a',
    'c'=>'c',
    'd'=>'d'
);

我希望看到的结果如下:

$resultArray = array(
    'a'=>'a',
    'b'=>'',
    'c'=>'c',
    'd'=>'d'
);

我认为您要查找的函数是array_merge。

$resultArray = array_merge($targetArray,$sourceArray);

使用array_merge:

$merged = array_merge($targetArray, $sourceArray);
// will result array('a'=>'a','b'=>'','c'=>'c','d'=>'d');

使用array_merge():

$targetArray = array('a'=>'','b'=>'','c'=>'','d'=>''); 
$sourceArray = array('a'=>'a','c'=>'c','d'=>'d');
$result = array_merge( $targetArray, $sourceArray);

该输出:

array(4) {
  ["a"]=>
  string(1) "a"
  ["b"]=>
  string(0) ""
  ["c"]=>
  string(1) "c"
  ["d"]=>
  string(1) "d"
}

也许这个任务的一个更直观/指示性的函数是array_replace()。它在关联数组上的性能与array_merge()相同。(演示)

var_export(
    array_replace($targetArray, $sourceArray)
);

输出:

array (
  'a' => 'a',
  'b' => '',
  'c' => 'c',
  'd' => 'd',
)

联合运算符可以获得类似但不完全相同的结果,但请注意,它的输入参数顺序相反,输出数组的键来自$targetArray,然后是$sourceArray

var_export($sourceArray + $targetArray);

输出:

array (
  'a' => 'a',
  'c' => 'c',
  'd' => 'd',
  'b' => '',
)