zoukankan      html  css  js  c++  java
  • merger_by_one 处理二维数组,根据里面某字段合并, 里面有的保留,有的求和~~

        public function tt(){
    
            $param =  array(
                array (
                    'hykno'         => '2222222-CB',
                    'tcdk_fid'      => '458B6D70-FB7F-47AE-8356-777777777777',
                    'totalamount'   => '0',
                    'offsetamount'  => '90.0',
                    'postamount'    => '0',
                    'hysyamout'     => '10.0',
                    'protypeid'     => '1',
                ),
                array (
                    'hykno'         => '2222222-CB',
                    'tcdk_fid'      => '458B6D70-FB7F-47AE-8356-777777777777',
                    'totalamount'   => '0',           // 需要支付的钱
                    'offsetamount'  => '5.0',        // 抵扣分类1下5.0份;
                    'postamount'    => '0',            // 运费
                    'hysyamout'     => '5.0',
                    'protypeid'     => '1',
                ),
                array (
                    'hykno'         => '2222222-CB',
                    'tcdk_fid'      => '458B6D70-FB7F-47AE-8356-777777777777',
                    'totalamount'   => '0',           // 需要支付的钱
                    'offsetamount'  => '5.0',        // 抵扣分类1下5.0份;
                    'postamount'    => '0',            // 运费
                    'hysyamout'     => '5.0',
                    'protypeid'     => '7',
                ),
                array (
                    'hykno'         => '2222222-CB',
                    'tcdk_fid'      => '458B6D70-FB7F-47AE-8356-777777777777',
                    'totalamount'   => '0',           // 需要支付的钱
                    'offsetamount'  => '5.0',        // 抵扣分类1下5.0份;
                    'postamount'    => '0',            // 运费
                    'hysyamout'     => '5.0',
                    'protypeid'     => '3',
                )
            );
    
            $this->merger_by_one($param,'protypeid',['totalamount','offsetamount','postamount','hysyamout']);
        }
    
    
        /***
         * @param $param    需要处理统一格式的数组
         * @param $one_str  根据某个字段合并
         * @param $plus_arr 需要求和的字段列表数组
         */
        public function merger_by_one($param,$one_str,$plus_arr){
            $u = array();
            foreach ($param as $k => $v){
                if (!in_array($v[$one_str],$u)){
                    $u[] = $v[$one_str];
                }
            }
    
            $data = array();
            foreach ($u as $uk => $uv)
            {
                foreach ($param as $pk => $pv)
                {
                    $all_keys = array_keys($pv);
                    if ($pv[$one_str] == $uv)
                    {
                        foreach ($all_keys as $key_val)
                        {
                            if (in_array($key_val,$plus_arr)){
                                $data[$uv][$key_val] += $pv[$key_val];
                            } else {
                                $data[$uv][$key_val] = $pv[$key_val];
                            }
                        }
                    }
                }
            }
    
            $data = array_values($data);
    
            dump($data);
        }
  • 相关阅读:
    在泛型方法中返回泛型数组
    java泛型方法返回泛型结果
    hive -e和hive -f的区别(转)
    hive表批处理
    python网络编程——实现简单聊天
    python网络编程(转)
    python分布式编程(转)
    shell多线程之进程间通信(3)
    在xml文件中使用该控件
    Java文件中代码
  • 原文地址:https://www.cnblogs.com/pansidong/p/10133968.html
Copyright © 2011-2022 走看看