我有
Array_A ( [0] => Array ( [DATE] => 2012-11-28 , [totalCount] => )
[1] => Array ( [DATE] => 2012-11-29 , [totalCount] => )
[2] => Array ( [DATE] => 2012-11-30 , [totalCount] => ) )
Array_B ( [10] => Array ( [DATE] => 2012-11-28 , [totalCount] => 30 )
[11] => Array ( [DATE] => 2012-11-30 , [totalCount] => 40 )
[12] => Array ( [DATE] => 2012-12-05 , [totalCount] => 50 ) )
如果我需要将 Array_A 替换为 Array_B 中的值并且输出应该是
,该怎么办?Array_A ( [0] => Array ( [DATE] => 2012-11-28 , [totalCount] => 30 )
[1] => Array ( [DATE] => 2012-11-29 , [totalCount] => )
[2] => Array ( [DATE] => 2012-11-30 , [totalCount] => 40 ) )
我刚刚注意到您只想使用
array_a
中的键的部分,这个循环就可以了。
foreach($array_a as $key => $value){
if (array_key_exists($key, $array_b){
$result[$key] = $array_b[$key];
} else {
$result[$key] = null;
}
}
或者,如果您希望在
array_a
中的键不存在时使用 array_b
的值,只需将 else
子句中的语句替换为:$result[$key] = $value;
。
尝试
$result = array_merge_recursive($Array_A, $Array_B);
print_r($result);
您的 a 和 b 数组具有相同的结构,因此不必在另一列匹配时有条件地更新一列,只需在查找数组中找到标识列时替换整行即可。 演示
$map = array_column($b, null, 'DATE');
var_export(
array_map(
fn($row) => $map[$row['DATE']] ?? $row,
$a
)
);
输出:
array (
0 =>
array (
'DATE' => '2012-11-28',
'totalCount' => 30,
),
1 =>
array (
'DATE' => '2012-11-29',
'totalCount' => NULL,
),
2 =>
array (
'DATE' => '2012-11-30',
'totalCount' => 40,
),
)