记录算法:运营需求 要把 起点和终点相同的司机订单 合并到一起表示一条路线的多次接单记录
2021/11/17 17:39:46
本文主要是介绍记录算法:运营需求 要把 起点和终点相同的司机订单 合并到一起表示一条路线的多次接单记录,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
运营需求 要把 起点和终点相同的司机订单 合并到一起表示一条路线的多次接单记录 如他有多条 合并成一条 并记录合并次数
这个需求我当时响了很久,自己尝试写了算法,但是好像还是差点什么。我问了一下我小弟 他直接告诉我 弄不了。
后来自己就默默想了好久,没有想出来。
后来咨询了一下大佬。大佬帮我写了个算法正好可以处理这个问题。
数据表读出来的数据是目前现在的样子。但是他们想要吧起点和终点相同的司机订单合计成一次接单记录 并且计算出平均运费。
public static function calcCount($arr) { $k_2 = 'start_poi'; $k_1 = 'end_poi'; $result = []; foreach ($arr as $key => $item) { // $result数组中是否存在 start_poi + end_poi组合的key if(!isset($result[$item[$k_1] . $item[$k_2]])) { // 不存在就对数组$result的start_poi + end_poi组合key 进行赋值 $result[$item[$k_1] . $item[$k_2]] = [ 'total' => $item['transprice_per_mine'], 'count' => 1 ]; } else { // 存在就说明有重复的,对value +1,并且删除unset对应的数组值 $result[$item[$k_1] . $item[$k_2]]['count'] += 1; $result[$item[$k_1] . $item[$k_2]]['total'] += $item['transprice_per_mine']; unset($arr[$key]); } } foreach ($arr as &$item) { // 把$result数组的结果赋值到去过重的原始数组中 $item['count'] = isset($result[$item[$k_1] . $item[$k_2]]['count']) ? $result[$item[$k_1] . $item[$k_2]]['count'] : 1; $item['average'] = (isset($result[$item[$k_1] . $item[$k_2]]['total']) ? $result[$item[$k_1] . $item[$k_2]]['total'] :0) / $item['count']; }unset($item); return $arr; }
现在分享一下大佬给我算法,也算是记录一下,防止下次再忘记了。
这篇关于记录算法:运营需求 要把 起点和终点相同的司机订单 合并到一起表示一条路线的多次接单记录的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-10-06小米11i印度快充版ROM合集:极致体验,超越期待
- 2024-10-06【ROM下载】小米11i 5G 印度版系统, 疾速跃迁,定义新速度
- 2024-10-06【ROM下载】小米 11 青春活力版,青春无极限,活力全开
- 2024-10-05小米13T Pro系统合集:性能与摄影的极致融合,值得你升级的系统ROM
- 2024-10-01基于Python+Vue开发的医院门诊预约挂号系统
- 2024-10-01基于Python+Vue开发的旅游景区管理系统
- 2024-10-01RestfulAPI入门指南:打造简单易懂的API接口
- 2024-10-01初学者指南:了解和使用Server Action
- 2024-10-01Server Component入门指南:搭建与配置详解
- 2024-10-01React 中使用 useRequest 实现数据请求