【发布时间】:2020-02-10 21:01:12
【问题描述】:
我已经玩了几个小时了,但运气不佳。
我当前的 JSON 如下所示: https://pastebin.com/TSmWFA2g
"10-10-2019 12:00AM":[
{
"speed":33,
"latitude":-11.2588112,
"longitude":100.8249533
},
{
"speed":33,
"latitude":-11.2381112,
"longitude":100.82509
},
{
"speed":31,
"latitude":-11.827312,
"longitude":100.8242733
}
],
"10-10-2019 12:01AM":[
{
"speed":29,
"latitude":-11.2902112,
"longitude":100.8202849
},
{
"speed":26,
"latitude":-11.2826432,
"longitude":100.3760333
}
]
我试图做的是为每个日期找到具有最高“速度”的条目并删除该日期下的其他条目(或使用单个条目创建一个新数组)。
编辑 01: 我现在已经试过了:
function my_sort($a,$b)
{
return $b['speed'] - $a['speed'];
}
usort($finalData,"my_sort");
echo json_encode($finalData);
这会按速度对数据进行排序,但 JSON 现在不包括在原始 JSON 中找到的日期。
[{"speed":33,"latitude":-11.2588112,"longitude":100.82509},
{"speed":33,"latitude":-11.2588112,"longitude":100.82509},
{"speed":31,"latitude":-11.2588112,"longitude":100.82509},
{"speed":31,"latitude":-11.2588112,"longitude":100.82509},
{"speed":33,"latitude":-11.2588112,"longitude":100.82509},
{"speed":32,"latitude":-11.2588112,"longitude":100.82509},
{"speed":24,"latitude":-11.2588112,"longitude":100.82509},
{"speed":16,"latitude":-11.2588112,"longitude":100.82509},]
【问题讨论】:
-
按速度对每个数组进行排序,然后使用
splice()删除除第一个元素之外的所有元素。 -
@Barmar 我对使用 PHP 的 JSON 很陌生,你能举个例子说明我如何按速度对数组进行排序吗?
-
StackOverflow 不是免费的编码服务。你应该try to solve the problem first。请更新您的问题以在minimal reproducible example 中显示您已经尝试过的内容。如需更多信息,请参阅How to Ask,并拨打tour :)
-
使用
json_decode()把它变成一个PHP数组。然后使用usort()对每个数组进行排序。然后使用array_splice()从数组中删除所有其他条目。 -
@Barmar 我会尝试一下,并在将来更新问题。我知道这不是“免费编码服务”。正如我在问题开始时所说的那样,我已经为此进行了 3 个小时。我花了一段时间才得到这样的数组,我最初没有说明。在来这里寻求帮助之前,我已经用尽了我所有的能力。