我有一种情况需要按日期对JSON对象进行排序。我在网上搜索了解决方案,所有内容都指向PHP usort函数的方向,但all examples有一个键/值对要排序。
这是我加载Feed的方式:
$ret = file_get_contents($url);
$res = json_encode($ret);
导致以下JSON
{
"2015-12-14":{
"direction":"S",
"snowfall":0.0,
[..]
},
"2015-12-15":{
"direction":"S",
"snowfall":3.0,
[..]
},
"2015-12-12":{
"direction":"SE",
"snowfall":0.0,
[..]
},
"2015-12-13":{
"direction":"S",
"snowfall":0.0,
[..]
},
"2015-12-10":{
"direction":"E",
"snowfall":0.0,
[..]
},
"2015-12-11":{
"direction":"S",
"snowfall":0.0,
[..]
}
}
如您所见,数据未按日期排序,但日期值是关键,因此我如何按日期对对象进行排序(2015-12-10,2015-12-11,2015-12- 12,2015-12-13,2015-12-12,2015-12-15)?
答案 0 :(得分:1)
只需在对数据进行编码之前对数据进行排序,例如ksort:
$ret = file_get_contents($url);
ksort($ret);
$res = json_encode($ret);
这样,$ret
似乎返回的数组将按键(日期)排序,然后按照排序顺序进行编码。
答案 1 :(得分:0)
答案 2 :(得分:0)
$json = '{
"2015-12-14":{
"direction":"S",
"snowfall":0.0
},
"2015-12-15":{
"direction":"S",
"snowfall":3.0
},
"2015-12-12":{
"direction":"SE",
"snowfall":0.0
},
"2015-12-13":{
"direction":"S",
"snowfall":0.0
},
"2015-12-10":{
"direction":"E",
"snowfall":0.0
},
"2015-12-11":{
"direction":"S",
"snowfall":0.0
}
}';
$array = get_object_vars(json_decode($json));
ksort($array);
echo json_encode((object)$array);