首先,我对此完全是个新手,我已经搜索过解决方案,但似乎没有一个能解决问题。
所以我正在尝试按日期对这个 JSON 数组进行排序,但我真的不知道我应该解决这个问题,非常感谢任何正确方向的提示!
["info":[
{"id":1, "title":"original title", "name":"john doe", "date":"2010-05-15"},
{"id":2, "title":"another title", "name":"foo bar", "date":"2009-04-11"},
...
所以我得到这样的数据
$data=file_get_contents('jsondata...');
$d=json_decode($data,true);
我想按日期对数据进行排序,我应该如何处理这个问题有什么想法吗?是否也可以只返回年份值?那么输出将是 2009 而不是 2009-04-11?
提前致谢
最佳答案
您可以使用 usort
和自定义比较函数:
$data = '{"info":[{"id":1, "title":"original title", "name":"john doe", "date":"2010-05-15"}, {"id":2, "title":"another title", "name":"foo bar", "date":"2009-04-11"}]}';
$info = json_decode($data, true)['info'];
usort($info, function ($a, $b) {
return $a['date'] <=> $b['date'];
});
<=>
此处适用于字符串,因为当日期格式为 YYYY-MM-DD 时,字符串比较也是日期比较。
然后,要显示条目的年份值,您可以将日期解析为 DateTime
并重新格式化:
$date = DateTime::createFromFormat('Y-m-d', $item['date']);
$year = $date->format('Y');
关于php - 如何使用 PHP 对 JSON 数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9808783/