2D 배열의 행을 열별로 그룹화하고 다른 열을 합산하는 방법은 무엇입니까?

Patricia Arquette
풀어 주다: 2024-11-10 08:10:02
원래의
782명이 탐색했습니다.

How to Group Rows in a 2D Array by Column and Sum Another Column?

2D 배열 행 데이터를 열별로 그룹화하고 다른 열 합산

테이블 형식 데이터를 분석할 때 공유된 데이터를 기반으로 행을 통합해야 하는 경우가 많습니다. 다른 열에 대한 계산을 수행하는 동안 특정 열의 값 2D 배열 행을 그룹화하고 다른 열의 값을 합산하는 과제에 도전해 보세요.

문제 설명:

각 행이 데이터 항목을 나타내는 2D 배열이 제공됩니다. . 목표는 지정된 그룹화 열(예: 'dd')을 기준으로 이러한 행을 그룹화하고 각 그룹 내 다른 열(예: '수량')의 값을 합하는 것입니다. 결과는 고유한 그룹화 값과 해당 합산된 열 값이 있는 축소된 2D 배열이어야 합니다.

예:

Input:
[
    ['quantity' => 5,  'dd' => '01-Nov-2012'],
    ['quantity' => 10, 'dd' => '01-Nov-2012'],
    ['quantity' => 3,  'dd' => '02-Nov-2012'],
    ['quantity' => 4,  'dd' => '03-Nov-2012'],
    ['quantity' => 15, 'dd' => '03-Nov-2012'],
];

Desired result:
[
    ['quantity' => 15, 'dd' => '01-Nov-2012'],
    ['quantity' => 3,  'dd' => '02-Nov-2012'],
    ['quantity' => 19, 'dd' => '03-Nov-2012'],
];
로그인 후 복사

해결책:

이 문제를 해결하려면 다음을 따르세요. 단계:

  1. 각 행에 대해 반복: 입력 2D 배열을 행별로 탐색합니다.
  2. 기존 그룹 확인: 현재 행의 그룹화 값('dd')에 대한 그룹이 이미 출력에 존재합니다. array.
  3. 필요한 경우 새 그룹 만들기: 현재 행의 그룹화 값에 대한 그룹이 없는 경우 그룹화 값과 초기 '수량' 값을 사용하여 출력 배열에 새 항목을 만듭니다. of 0.
  4. 수량 누적: 기존 또는 새로 생성된 그룹의 '수량' 값을 현재 행의 '수량' 값.
  5. 최종 배열 추출: 출력 배열을 원하는 결과와 일치하도록 숫자 인덱스 형식으로 다시 변환합니다.

다음은 PHP의 구현 예:

$in = array(array()); // your input
$out = array();
foreach ($in as $row) {
    if (!isset($out[$row['dd']])) {
        $out[$row['dd']] = array(
            'dd' => $row['dd'],
            'quantity' => 0,
        );
    }
    $out[$row['dd']]['quantity'] += $row['quantity'];
}
$out = array_values($out); // make the out array numerically indexed
var_dump($out);
로그인 후 복사

이 솔루션은 지정된 열을 기준으로 행을 효율적으로 그룹화하고 각 그룹을 선택하여 원하는 결과로 축소된 2D 배열을 생성합니다.

위 내용은 2D 배열의 행을 열별로 그룹화하고 다른 열을 합산하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿