2016-07-11 4 views
0

나는 [0] 키의 일부 값은 반복이 같은 배열이있는 경우 : 키 [2], [3][4]이 때 키 합산 어디 핵심 [0] 독특한 배열을 만들기 위해 어떻게해야합니까 무엇일부 값을 요약 한 고유 한 다차원 배열 가져 오기?

$input = array(
    array("7", 2, 16,  46, 736), 
    array("7", 2, 16, 6.0243, 96.39), 
    array("8", 2, 16, 7.0243, 112.39), 
    array("8", 2, 16,  47, 752), 
    array("8", 2, 16, 7.0243, 112.39), 
    array("9", 0, 0, 8.0243,  0), 
    array("10", 0, 0, 9.0243,  0), 
    array("10", 0, 0,  49,  0), 
); 

을 당신은 PHP에서 database aggregate function을 구현하려고하는 것 같습니다

$output = array(
    array("7", 2, 32, 52.0243, 832.39), 
    array("8", 2, 48, 61.0486, 976.78), 
    array("9", 0, 0, 8.0243,  0), 
    array("10", 0, 0, 58.0243,  0), 
); 

답변

1

: [0]는 다음과 같이 동일한 값을 가지고 있습니다. 이와 같은 일을 할 때 기본 개념은 결과 배열에서 키로 그룹화하려는 값을 사용하는 것입니다. 그래서 행의 사용자 설정을 통해 루프는 다음과 같이 물론

foreach ($original as $row) { 

    $key = $row[0];    // use the column you want to group by as the key 

    if (!isset($new[$key])) { 
     $new[$key] = $row;   // for new instances of the key, just add the whole row 
    } else { 

     // if the key has already been set, add to the non-key columns to accumulate the sum 

     $new[$key][2] += $row[2]; 
     $new[$key][3] += $row[3]; 
     $new[$key][4] += $row[4]; 
    } 
} 

, 실제로 작업중인 데이터가 데이터베이스에서 온다면, 가장 가능성이 당신의 선택 쿼리의 그룹화 및 합계를 할 더 좋을 것이다 PHP로하기보다 :

SELECT col1, MAX(col2), SUM(col3), SUM(col4), SUM(col5) FROM your_table GROUP BY col1 
관련 문제