3 回答
TA贡献1812条经验 获得超5个赞
更新
为了使用 Laravel 提供的方法对集合进行排序,可以使用以下代码
$collection->sort(function ($a, $b) {
$monthA = date_parse($a['monthname']);
$monthB = date_parse($b['monthname']);
return $monthA["month"] - $monthB["month"];
});
Laravel 文档提到,如果您的排序很复杂,您可以使用回调进行排序
如果您想在 Vanilla PHP 中排序,下面是代码。
$data = '{"data_points": [{ "monthname": "Apr", "value": 62 },{ "monthname": "Aug", "value": 1904.53 },{ "monthname": "Feb", "value": 33.33 },{ "monthname": "Jan", "value": 2033.33 },{ "monthname": "Jul", "value": 90.83 },{ "monthname": "Dec", "value": 2030 },{ "monthname": "Mar", "value": 100 },{ "monthname": "Sep", "value": 433.33 },{ "monthname": "May", "value": 5670.93 },{ "monthname": "Jun", "value": 40.4 },{ "monthname": "Oct", "value": 0 },{ "monthname": "Nov", "value": 31 }]}';
$decoded = json_decode($data, true);
usort($decoded['data_points'], "compare_months");
$data = json_encode( $decoded );
print_r($data);
function compare_months($a, $b) {
$monthA = date_parse($a['monthname']);
$monthB = date_parse($b['monthname']);
return $monthA["month"] - $monthB["month"];
}
基本上,您需要将月份转换为数值。然后在此基础上进行排序。
TA贡献1744条经验 获得超4个赞
在答案的帮助下,我得到了一个最佳解决方案,
$sort_collect = $result->sortBy(function ($item, $i) {
return ( Carbon::parse($item->monthname)->format("m") );
});
return $sort_collect;
返回所需的订单
- 3 回答
- 0 关注
- 236 浏览
添加回答
举报