我的问题与其他关于排序的问题非常相似,但我终于找不到答案了,所以我发帖了。
在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变量。有什么提示怎么做?
答案 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
...
将为您提供所需的价值。