1. 程式人生 > >處理二維陣列, 按照某個欄位合併重複的,其餘欄位中部分欄位保留,部分相加

處理二維陣列, 按照某個欄位合併重複的,其餘欄位中部分欄位保留,部分相加

  //處理二維陣列, 按照某個欄位合併重複的,其餘欄位中部分欄位保留,部分相加
public function deal_erwei_arr(){ $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', ) ); $u = array(); foreach ($param as $k => $v){ if (!in_array($v['protypeid'],$u)){ $u[] = $v['protypeid']; } } $data = array(); foreach ($u as $uk => $uv) { foreach ($param as $pk => $pv) { if ($pv['protypeid'] == $uv) { $data[$uv]['hykno'] = $pv['hykno']; $data[$uv]['totalamount'] += $pv['totalamount']; $data[$uv]['offsetamount'] += $pv['offsetamount']; $data[$uv]['postamount'] += $pv['postamount']; $data[$uv]['hysyamout'] += $pv['hysyamout']; $data[$uv]['protypeid'] = $pv['protypeid']; } } } $data = array_values($data); dump($data); }