我需要根据I合并2个列表,并得到一个结果,这个结果将在结果上添加列,我只是在添加这个文本,stackoverflow告诉我要添加更多的文本
array1 = [
{
id: 1,
firstName: "paul1",
},
{
id: 2,
firstName: "paul2",
},
{
id: 3,
firstName: "paul3",
}]
array2 = [
{
id: 1,
lastName: "jackson1"
},
{
id: 3,
lastName: "jackson3"
}]合并结果将是
result = [
{
id: 1,
firstName: "paul1",
lastName: "jackson1"
},
{
id: 2,
firstName: "paul2",
},
{
id: 3,
firstName: "paul3",
lastName: "jackson3"
}]发布于 2020-05-08 03:33:51
正如我在注释“您可以在array_combine中使用array_combine”中所说的,假设您有以下两个数组:
$array1 = array([
'id'=>1,
"firstName"=> "paul1",
], [
'id'=>3,
"firstName"=> "paul `has no last name`3",
], [
'id'=>2,
"firstName"=> "paul2",
],);
$array2 = array([
'id'=>1,
"lastName"=> "jackson1",
], [
'id'=>2,
"lastName"=> "jackson2",
], [
'id'=>5,
"lastName"=> "jackson `has no first name`5",
],);所以你可以像这样按id合并它们:
$marged = array_replace_recursive(
array_combine(array_column($array1, "id"), $array1),
array_combine(array_column($array2, "id"), $array2)
)注意:您可以用您想要的键更改"id“
输出应该是这样的:
array:4 [▼
1 => array:3 [▼
"id" => 1
"firstName" => "paul1"
"lastName" => "jackson1"
]
3 => array:2 [▼
"id" => 3
"firstName" => "has no last name3"
]
2 => array:3 [▼
"id" => 2
"firstName" => "paul2"
"lastName" => "jackson2"
]
5 => array:2 [▼
"id" => 5
"lastName" => "jackson5"
]
]发布于 2020-05-08 03:53:19
试试这个:
$result = $array1;
foreach ($array1 as $key => $value) {
$match = collect($array2)->firstWhere('id', $value['id']);
$result[$key]['lastName'] = $match ? $match['lastName'] : '';
}https://stackoverflow.com/questions/61671415
复制相似问题