• 记录算法:运营需求 要把 起点和终点相同的司机订单 合并到一起表示一条路线的多次接单记录


    运营需求 要把 起点和终点相同的司机订单 合并到一起表示一条路线的多次接单记录    如他有多条  合并成一条 并记录合并次数 

    这个需求我当时响了很久,自己尝试写了算法,但是好像还是差点什么。我问了一下我小弟 他直接告诉我 弄不了。

    后来自己就默默想了好久,没有想出来。

    后来咨询了一下大佬。大佬帮我写了个算法正好可以处理这个问题。

    数据表读出来的数据是目前现在的样子。但是他们想要吧起点和终点相同的司机订单合计成一次接单记录 并且计算出平均运费。

     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;
        }

    现在分享一下大佬给我算法,也算是记录一下,防止下次再忘记了。

  • 相关阅读:
    关于Git的使用方法
    Python读取Excel数据
    用到的Dos命令总结 持续更新
    windows下使用Jenkins+Gitea持续集成
    HDFS概述(2)————Block块大小设置
    分布式文件系统比较出名的有HDFS  和 GFS
    c++里面有没有什么办法做到 判断某个给定的未知数是double类型还是int类型 呢?
    About HDFS blocks
    hadoop深入学习之SequenceFile
    使用RawComparator加速Hadoop程序
  • 原文地址:https://www.cnblogs.com/honely/p/15568384.html
Copyright © 2020-2023  润新知