Php 基于仅保留最新值的值(基于时间戳的第二个值)删除数组中的重复对象
如何返回仅包含一个“项目1”和一个“项目2”的新数组,其中保存的项目是具有最新时间戳的项目Php 基于仅保留最新值的值(基于时间戳的第二个值)删除数组中的重复对象,php,arrays,Php,Arrays,如何返回仅包含一个“项目1”和一个“项目2”的新数组,其中保存的项目是具有最新时间戳的项目 看到了一大堆类似的问题,但没有发现任何我可以解决的问题或适合我的情况的问题。只要一个foreach和时间戳的比较就足以实现这一点: [ { title: "Item 1", dateModified: 1598208392600 }, { title: "Item 1", dat
看到了一大堆类似的问题,但没有发现任何我可以解决的问题或适合我的情况的问题。只要一个foreach和时间戳的比较就足以实现这一点:
[
{
title: "Item 1",
dateModified: 1598208392600
},
{
title: "Item 1",
dateModified: 1598208395105
},
{
title: "Item 1",
dateModified: 1598210504648
},
{
title: "Item 2",
dateModified: 1598210604491
},
{
title: "Item 2",
dateModified: 1598210612439
}
]
这些是数组或数组内的对象?数组内的对象
<?php
$data = [
(object)[
'title' => "Item 1",
'dateModified' => 1598208392600
],
(object)[
'title' => "Item 1",
'dateModified' => 1598208395105
],
(object)[
'title' => "Item 1",
'dateModified' => 1598210504648
],
(object)[
'title' => "Item 2",
'dateModified' => 1598210604491
],
(object)[
'title' => "Item 2",
'dateModified' => 1598210612439
],
];
$filtered = [];
foreach ($data as $row) {
if (!isset($filtered[$row->title])) {
$filtered[$row->title] = $row;
}
if ($filtered[$row->title]->dateModified < $row->dateModified) {
$filtered[$row->title] = $row;
}
}
var_dump($filtered);
array(2) {
["Item 1"]=>
object(stdClass)#3 (2) {
["title"]=>
string(6) "Item 1"
["dateModified"]=>
int(1598210504648)
}
["Item 2"]=>
object(stdClass)#5 (2) {
["title"]=>
string(6) "Item 2"
["dateModified"]=>
int(1598210612439)
}
}