我有两个关联数组,它们彼此非常相似(但不一样)它们都是独立的数组,我想将它们合并在一起,同时维护这两个数组,这可以通过以下方式完成:
我尝试过使用$tagItems = array_count_values($tagItems, $tagItems2);
但是当我尝试对json进行编码并将其回显时,这只会给我null
。
我也尝试使用$tagItems = array_merge($tagItems, $tagItems2);
这个添加新密钥,但不会合并重复的密钥值(只保留合并的数组值)。
JSON格式的数组看起来像这样,一个数组称为$ tagItems,另一个数组称为$ tagItems2
{
"game1": 22,
"game2": 20,
"game3": 16,
}
{
"game1": 22,
"game2": 20,
"game3": 16,
"game4": 12,
}
什么允许我这样做?
答案 0 :(得分:5)
以最短的格式将$b
合并到$a
:
foreach ($b as $key => $value) {
$a[$key] += $value;
}
但是,最好在写入之前检查数组键是否存在:
if (!array_key_exists($key, $a)) {
$a[$key] = 0;
}
$a[$key] += $value;
答案 1 :(得分:1)
此方法使用映射并允许任一数组的键不存在于另一个数组中。
$merged = array_fill_keys(array_keys($a + $b), 0);
$sums = array_map(
function($aVal, $bVal) { return $aVal + $bVal; },
array_merge($merged, $a),
array_merge($merged, $b)
);
$merged = array_combine(array_keys($merged), $sums);