php 二維數組以某一鍵名進行分組相加
來源:程序員人生 發布時間:2013-12-17 14:25:14 閱讀次數:2812次
如題,如果是從數據庫里取數據的時候大可以使用如下SQL
SELECT SUM(t_value),t_id FROM t_table GROUP BY t_id
但是如果是在php程序中處理類似的問題就稍微麻煩點了,這里給個函數就是處理類似的問題,實例代碼如下:
- <?php
-
-
-
- function add_array($arr, &$new_arr, $target_key) {
- $num = count($new_arr);
- for ($i = 0; $i < $num; $i++) {
-
-
-
-
- if ($arr[$target_key] != $new_arr[$i][$target_key]) {
- $cmp_num++;
- } else {
- $tar_exist = true;
- $tar_key = $i;
- break;
- }
- }
-
- if ($cmp_num == $num)
- $tar_exist = false;
- if ($tar_exist) {
- foreach ($arr as $key => $value) {
- if ($key != $target_key) {
- $new_arr[$tar_key][$key]+=$value;
- }
- }
- } else {
-
-
-
-
-
- $new_arr[$num][$target_key] = $arr[$target_key];
- foreach ($arr as $key => $value) {
- if ($key != $target_key) {
- $new_arr[$num][$key]+=$value;
- }
- }
- }
- }
- $arr = array(
- array('group_id' => 13, 'team_price' => 88.00, 'satopay_price' => 85.00, 'team_id' => 348, 'origin' => 440, 'gain' => 14.45, 'quantity' => 5),
- array('group_id' => 13, 'team_price' => 12.00, 'satopay_price' => 11.00, 'team_id' => 344, 'origin' => 36, 'gain' => 2.76, 'quantity' => 3),
- array('group_id' => 14, 'team_price' => 4.99, 'satopay_price' => 4.60, 'team_id' => 335, 'origin' => 4.99, 'gain' => 0.31915, 'quantity' => 1),
- array('group_id' => 14, 'team_price' => 12.00, 'satopay_price' => 11.00, 'team_id' => 344, 'origin' => 24, 'gain' => 1.84, 'quantity' => 2),
- array('group_id' => 15, 'team_price' => 13.00, 'satopay_price' => 11.00, 'team_id' => 344, 'origin' => 24, 'gain' => 1.84, 'quantity' => 2),
- );
- $new_arr = array();
- foreach ($arr as $key => $value) {
- add_array($value, &$new_arr, 'group_id');
- }
- var_dump($new_arr);
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈