php - 如何使用 PHP 对 JSON 数组进行排序

标签 php arrays json sorting date

首先,我对此完全是个新手,我已经搜索过解决方案,但似乎没有一个能解决问题。

所以我正在尝试按日期对这个 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');

Here's a demo.

关于php - 如何使用 PHP 对 JSON 数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9808783/

相关文章:

javascript - 如何根据条件调用javascript中的函数

javascript - parseFloat() 没有解析我的数组中的所有字符串。 JavaScript

javascript - 使用 NodeJS 将网页抓取的数据写入 JSON 文件

php - 使用 Php 我无法回显 HTML 表格

php - 在表单提交时更新缓存文件

php - mysqli 在 apache 下连接不上

javascript - 如何删除 forEach 函数变量上的 'Undefined' 状态

javascript - 随机选择组合,以便每个元素精确地代表两次

php - 在 PHP 中表达 Json 响应

python - python 中的深度复制和过滤