首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >PHP从数组中删除除一个具有相同属性的对象之外的所有对象

PHP从数组中删除除一个具有相同属性的对象之外的所有对象
EN

Stack Overflow用户
提问于 2019-06-26 08:25:56
回答 2查看 46关注 0票数 0

使用Eloquent,我想从带有‘$outputs’B的标题数组中删除两个对象,只保留一个。

$outputs包含以下信息:

代码语言:javascript
复制
[
    {
        "Title": "A",
        "Publication date": "2013",
    },
    {
        "Title": "B",
        "Publication date": "2010",
    },
    {
        "Title": "B",
        "Publication date": "2999",
    },
    {
        "Title": "B",
        "Publication date": "5555",
    },
];

我知道有很多关于这方面的帖子,但我自己找不到一种方法。任何帮助都将不胜感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-06-26 10:23:42

如果这是用于数组/集合,而不是雄辩的查询,则可以使用集合keyBy方法来获取唯一值。

https://laravel.com/docs/5.8/collections#method-keyby

代码语言:javascript
复制
$data = [
    [
        "Title" => "A",
        "Publication date" => "2013",
    ],
    [
        "Title" => "B",
        "Publication date" => "2010",
    ],
    [
        "Title" => "B",
        "Publication date" => "2999",
    ],
    [
        "Title" => "B",
        "Publication date" => "5555",
    ],
];

$collection = collect($data)->keyBy('Title');

然后您的输出将如下所示:

代码语言:javascript
复制
Collection {#1389 
  #items: array:2 [
    "A" => array:2 [
      "Title" => "A"
      "Publication date" => "2013"
    ]
    "B" => array:2 [
      "Title" => "B"
      "Publication date" => "5555"
    ]
  ]
}

对于每个标题,keyBy方法将为您提供集合中的最后一项,因此,如果要获取特定项,可以在调用keyBy之前对集合进行排序:

代码语言:javascript
复制
// get each Title with the highest Publication date
$collection = collect($data)->sortBy('Publication date')->keyBy('Title');

// get each Title with the lowest Publication date
$collection = collect($data)->sortByDesc('Publication date')->keyBy('Title');

如果你想返回一个没有键"A“和"B”的数组,你可以这样做:

代码语言:javascript
复制
$collection = collect($data)->keyBy('Title')->values()->toArray();

输出:

代码语言:javascript
复制
array:2 [
  0 => array:2 [
    "Title" => "A"
    "Publication date" => "2013"
  ]
  1 => array:2 [
    "Title" => "B"
    "Publication date" => "5555"
  ]
]
票数 1
EN

Stack Overflow用户

发布于 2019-06-26 08:44:58

您可以通过在查询中使用destinctgroupBy来完成此操作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56763610

复制
相关文章

相似问题

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