首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel 6.18按ids合并2列表

Laravel 6.18按ids合并2列表
EN

Stack Overflow用户
提问于 2020-05-08 03:14:57
回答 2查看 25关注 0票数 0

我需要根据I合并2个列表,并得到一个结果,这个结果将在结果上添加列,我只是在添加这个文本,stackoverflow告诉我要添加更多的文本

代码语言:javascript
复制
    array1 = [
 {
  id: 1,
  firstName: "paul1",
},
{
  id: 2,
  firstName: "paul2",
},
{
  id: 3,
  firstName: "paul3",
}]

    array2 = [
 {
  id: 1,
  lastName: "jackson1"
},
{
  id: 3,
  lastName: "jackson3"
}]

合并结果将是

代码语言:javascript
复制
result = [
 {
  id: 1,
  firstName: "paul1",
  lastName: "jackson1"
},
{
  id: 2,
  firstName: "paul2",
},
{
  id: 3,
  firstName: "paul3",
  lastName: "jackson3"
}]
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-05-08 03:33:51

正如我在注释“您可以在array_combine中使用array_combine”中所说的,假设您有以下两个数组:

代码语言:javascript
复制
$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合并它们:

代码语言:javascript
复制
$marged = array_replace_recursive(
            array_combine(array_column($array1, "id"), $array1),
            array_combine(array_column($array2, "id"), $array2)
            )

注意:您可以用您想要的键更改"id“

输出应该是这样的:

代码语言:javascript
复制
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"
  ]
]
票数 0
EN

Stack Overflow用户

发布于 2020-05-08 03:53:19

试试这个:

代码语言:javascript
复制
$result = $array1;
foreach ($array1 as $key => $value) {
    $match = collect($array2)->firstWhere('id', $value['id']);
    $result[$key]['lastName'] = $match ? $match['lastName'] : '';
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61671415

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档