我试图通过MONTH名称缩短数组.
[
{
"order_id":34,
"user_id":17,
"sum":65000,
"month":"May"
},
{
"order_id":32,
"user_id":19,
"sum":15000,
"month":"July"
},
{
"order_id":29,
"user_id":1,
"sum":20000,
"month":"April"
}
]
有什么方法可以快速排序吗?我需要名字格式的月份.
我期待一个像下面这样的结果.
[
{
"order_id":29,
"user_id":1,
"sum":20000,
"month":"April"
},
{
"order_id":34,
"user_id":17,
"sum":65000,
"month":"May"
},
{
"order_id":32,
"user_id":19,
"sum":15000,
"month":"July"
}
]
我尝试了arsort,krsort,array_reverse(),但这些方法无法缩短它们.所以寻找其他解决方案.
谢谢! (提前)
解决方法:
直接任何函数都不能在这里应用,因为你的数据是json格式,你可以像下面这样实现: –
$data = '[
{
"order_id":34,
"user_id":17,
"sum":65000,
"month":"May"
},
{
"order_id":32,
"user_id":19,
"sum":15000,
"month":"July"
},
{
"order_id":29,
"user_id":1,
"sum":20000,
"month":"April"
}
]';
$new_array = json_decode($data,true); // convert json to php array
echo "
";print_r($new_array); // print original arrayusort($new_array, "compare_months"); // using usort with callback function
var_dump($new_array); // your final sorted array
function compare_months($a, $b) {
$monthA = date_parse($a['month']);
$monthB = date_parse($b['month']);
return $monthA["month"] - $monthB["month"];
}
?>
参考: –
标签:json,php,arrays
来源: https://codeday.me/bug/20190527/1166384.html