我一直試圖找出兩個集合之間的區別:
第一:
{
"name": "Test A",
"scores": [
{
"name": "Values",
"points": 9
},
{
"name": "Algebra",
"points": 6
},
{
"name": "Science",
"points": 5
},
{
"name": "Total",
"points": 20
}
]
}
第二:
{
"name": "Test A",
"scores": [
{
"name": "Values",
"points": 5
},
{
"name": "Algebra",
"points": 8
},
{
"name": "Total",
"points": 13
}
]
}
我的目標是基于第一個集合創建一個包含缺失鍵和值對的新集合,保留其值,缺失鍵的值為 0。我想要實作的輸出是:
{
"name": "Test A",
"scores": [
{
"name": "Values",
"points": 5
},
{
"name": "Algebra",
"points": 8
},
{
"name": "Science",
"points": 0
},
{
"name": "Total",
"points": 13
}
]
}
使用diffKeys方法:
$collection_new = $collection_1['scores']->diffKeys($collection_2['scores']);
dd($collection_new->all());
這將導致:
{
"4": {
"name": "Total",
"points": 20
},
}
需要你很棒的輸入。謝謝。
uj5u.com熱心網友回復:
下面的函式應該可以作業,但第一個陣列應該包含第二個陣列的所有分數。
$first['scores'] = mergeScores();
function mergeScores()
{
return array_map(
fn ($x) => array_merge($x, getPoint($x['name'])),
$first['scores']
);
}
function getPoint($name)
{
$score = array_filter($second, fn ($x) => $x['name'] == $name);
return ['point' => empty($score) ? 0 : $score['score']];
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/335756.html
上一篇:使用陣列和回圈更新MySQL表
