热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

laravel二维数组多条件排序解决方式

方式1根据集合拼接key去排序$results_product[[create_time2018-10-1010:25:05,downloaded20,product_id1

方式1 根据集合拼接key去排序

$results_product = [['create_time' => '2018-10-10 10:25:05', 'downloaded' => 20, 'product_id' => 1],['create_time' => '2018-10-10 10:20:05', 'downloaded' => 50, 'product_id' => 2],['create_time' => '2018-10-10 10:20:05', 'downloaded' => 50, 'product_id' => 4],['create_time' => '2018-10-10 10:20:05', 'downloaded' => 70, 'product_id' => 3]];$result = collect($results_product)->map(function($data){$data['sort'] = $data['create_time'].'_'.$data['downloaded'].'_'.$data['product_id'];return $data;})->sortByDesc('sort')->toArray();dd($result);

在这里插入图片描述
不方便的就是只能单向排序 如果是 字段1 升序 字段2 降序 就不太好处理了

方式2 PHP函数处理(推荐,且灵活)

foreach ($results_product as $key => $row) {$create_time[$key] = $row['create_time'];$downloaded[$key] = $row['downloaded'];$product_id[$key] = $row['product_id'];}array_multisort($create_time, SORT_DESC, $downloaded, SORT_DESC, $product_id, SORT_DESC, $results_product);

方式3 (误区-该方法不行,多字段切勿使用)

$results_product2 = collect($results_product);$results_product2 = $results_product2->sortByDesc('create_time')->sortByDesc('downloaded')->sortByDesc('product_id');


推荐阅读
author-avatar
Blackage
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有