按日期按PHP排序JSON文件

时间:2015-08-03 13:34:32

标签: php json sorting

我的问题与其他关于排序的问题非常相似,但我终于找不到答案了,所以我发帖了。

在JSON编码之后,我有这样的数组。

 array(2) 
    { [0]=> array(105)
        { [0]=> array(25) 
            { ["id"]=> int(6118) 
            ["region_id"]=> int(2) 
            ["region"]=> string(6) "Region" 
            ["offer_issuer_id"]=> int(1) 
            ["offer_issuer"]=> string(11) "Some issuer" 
            ["profession_id"]=> int(3614) 
            ["profession"]=> string(33) "some profession info" 
            ["position"]=> string(45) "Some position info" 
            ["kind"]=> string(8) "parttime" 
            ["expiration_date"]=> string(10) "2015-08-09" 
            ["url"]=> string(57) "some_url_address" 
            ["created_at"]=> string(24) "2015-07-09T09:57:05.000Z" 
            ["updated_at"]=> string(24) "2015-07-09T09:57:05.000Z"
[...] 
        } 
        [1]=> array(25) 
            { 
            ["id"]=> int(6150) 
            ["region_id"]=> int(2) 
            ["region"]=> string(6) "Region" 
            ["offer_issuer_id"]=> int(1) 
            ["offer_issuer"]=> string(11) "Some issuer" 
            ["profession_id"]=> int(3599) 
            ["profession"]=> string(23) "some profession info" 
            ["position"]=> string(38) "Some position info"
            ["kind"]=> string(8) "parttime" 
            ["expiration_date"]=> string(10) "2015-08-15" 
            ["url"]=> string(57) "some_url_address" 
            ["created_at"]=> string(24) "2015-07-18T11:49:43.000Z" 
            ["updated_at"]=> string(24) "2015-07-18T11:49:43.000Z" 
            [...] 
            } 
        [2]=> array(25) 
            { 
            ["id"]=> int(6165) 
            ["region_id"]=> int(2) 
            ["region"]=> string(6) "region" 
            ["offer_issuer_id"]=> int(1) 
            ["offer_issuer"]=> string(11) "Some issuer" 
            ["profession_id"]=> int(8443) 
            ["profession"]=> string(23) "some profession info" 
            ["position"]=> string(38) "Some position info"
            ["kind"]=> string(8) "parttime" 
            ["expiration_date"]=> string(10) "2015-08-16" 
            ["url"]=> string(57) "some_url" 
            ["created_at"]=> string(24) "2015-07-27T09:53:52.000Z" 
            ["updated_at"]=> string(24) "2015-07-27T09:53:52.000Z" 
    [...] 
            } 

我必须按日期对这些数据进行排序,但每当我尝试时,我都会收到错误

  

“注意:未定义的索引:在第53行的D:\ xampp ...中创建了__

这是一些排序代码:

function sortFunction ($a, $b){
    return strtotime($a["created_at"]) - strtotime($b["created_at"]);

}
usort($json, "sortFunction");

我认为问题在于返回语法 - 我无法进入created_at变量。有什么提示怎么做?

1 个答案:

答案 0 :(得分:1)

您的错误出现在此表达式

return strtotime($a["created_at"]) - strtotime($b["created_at"]);

您正在处理多维数组,因此您需要为每个维度指定键。

基于你的JSON转储我可以看到你有 一个包含2个元素的数组。指数0至1

元素0包含105个元素的数组。指数0至104

每个元素本身都是由25个元素组成的关联数组。不同的字符串键。

因此,为了访问您要查找的created_at值,您需要访问头数组的每个级别。

$a[0][0]["created_at"]; //first element
$a[0][1]["created_at"]; //second element
$a[0][2]["created_at"]; //third element
$a[0][3]["created_at"]; //fourth element
...

将为您提供所需的价值。