在PHP中按日期排序JSON文件


Sort JSON file in PHP by date

我的问题和其他人关于排序的问题很相似,但我最终没有找到答案,所以我发了。

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" 
    [...] 
            } 

我必须按日期排序这些数据,但每次我尝试,我得到错误

"注意:未定义索引:created_at in D:'xampp…第53行

这是一些排序代码:

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

我认为问题是在返回语法-我不能进入created_at变量。有什么建议吗?

你的错误在这个表达式

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

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

根据你的JSON转储,我可以看到你有一个包含两个元素的数组。索引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
...