【发布时间】:2021-02-11 02:58:50
【问题描述】:
我有一个 JSON 文件,其中有日期,但我想在它们通过 foreach 时按降序对它们进行排序。
{
"posts": [
{
"id": "50",
"name": "Charlotte Johnson",
"date": "2021-02-08 10:15:38"
},
{
"id": "51",
"name": "Emma Jones",
"date": "2021-02-09 18:30:38"
},
{
"id": "52",
"name": "Benjamin Miller",
"date": "2021-02-10 23:47:38"
}
]
}
我遍历 JSON 文件中的数据。 我使用了 usort,但日期仍然没有显示降序。
<?php
$datajson = json_decode(file_get_contents("results.json"));
usort($datajson->posts, function($a, $b) {
return strtotime($a->date) - strtotime($b->date);
});
foreach($datajson->posts as $row)
{
$date = date('Y-m-d H:i:s', strtotime($row->date));
echo " Date: ". $date ."<br />";
}
?>
PHP 显示的日期
Date: 2021-02-08 10:15:38
Date: 2021-02-09 18:30:38
Date: 2021-02-10 24:47:38
但我想按降序对它们进行排序并像这样显示它们
Date: 2021-02-10 24:47:38
Date: 2021-02-09 18:30:38
Date: 2021-02-08 10:15:38
你能帮我解决这个问题吗?
【问题讨论】:
-
对于降序,只需反转回调
$b - $a内的参数即可。 -
另外,不是排序问题,但这似乎不需要
$date = date('Y-m-d H:i:s', strtotime($row->date)); -
感谢你们两位指出问题所在。我已经从
$ date中删除了该行。