【问题标题】:sort Json data in php ? Different specific data?在 php 中对 Json 数据进行排序?不同的具体数据?
【发布时间】:2017-10-24 13:56:02
【问题描述】:

这是 webservice 中的 json 数据,我需要对此类信息进行排序,从上到下排序 2017..bla - 2015..bla -2014,可能排序值“4”或标题 2015 blabla.... 值在 PHP 脚本中,我该怎么做?

"2015-09-11 09:18:11.023151": {
    "1": "4422",
    "2": "asd",
    "3": "aaa",
    "4": "2015-09-11 09:18:11.023151"
    },
"2014-10-29 13:33:14.325827": {
    "1": "5852",
    "2": "shfe",
    "3": "sds",
    "4": "2014-10-29 13:33:14.325827"
},
"2017-11-10 09:18:11.315102": {
    "1": "2323",
    "2": "sfd",
    "3": "sdf",
    "4": "2017-11-10 09:18:11.315102"
}

我试试:

$example= json_decode($result, true);


usort($example, function($a, $b) {  
    return $a->{"4"} > $b->{"4"} ? -1 : 1; }); 

echo json_encode($example);

我们怎么做呢?

【问题讨论】:

  • 您正在将 JSON 转换为数组,因此您需要这样访问它。 return $a["4"] > $b["4"] ? -1 : 1; });

标签: php json


【解决方案1】:

请试试这个。

$result = '{"2015-09-11 09:18:11.023151":{"1":"4422","2":"asd","3":"aaa","4":"2015-09-11 09:18:11.023151"},"2014-10-29 13:33:14.325827":{"1":"5852","2":"shfe","3":"sds","4":"2014-10-29 13:33:14.325827"},"2017-11-10 09:18:11.315102":{"1":"2323","2":"sfd","3":"sdf","4":"2017-11-10 09:18:11.315102"}}';

$example= json_decode($result, true);
usort($example, function($a, $b) { return $a["4"] > $b["4"] ? -1 : 1; }); 
echo json_encode($example);

【讨论】:

  • 正在工作,但如何获得我的 $result ?我的 json 不起作用:S 为什么
  • 你显示的json无效。它必须是一个根,可以是一个对象,也可以是一个对象数组。万一,您的 json 应该是一个对象,其中日期是键。尝试将您的 json 放在 jsonlint.com
  • jsonlint.com - 有效的 JSON 我的 json 数据,我的结果像你一样感谢人。
【解决方案2】:

我想我解决了你的问题。我首先将 json 转换为一个数组,就像你做的那样 $array = json_decode($json, true);

接下来我没有使用usort(),而是使用了asort()

Asort 将您的数组从高到低排序并在日期上工作(在我的情况下)

http://php.net/manual/en/function.asort.php

这是你的意思吗?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-16
    • 1970-01-01
    • 2014-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-10
    相关资源
    最近更新 更多