>백엔드 개발 >PHP 튜토리얼 >특정 열을 기준으로 행을 그룹화하고 2D 배열의 다른 열을 합산하는 방법은 무엇입니까?

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

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-17 02:33:03728검색

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

2D 배열에서 데이터 그룹화 및 열 합산

데이터 처리 시나리오에서는 2D 배열의 행을 그룹화해야 할 수도 있습니다. 지정된 열을 기반으로 한 다음 각 그룹 내의 다른 열에 값을 누적합니다.

문제 설명:

아래 표시된 것과 같은 입력 배열이 제공됩니다.

[
    ['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'],
]

'dd' 열을 기준으로 행을 그룹화하고 각 그룹 내의 '수량' 값을 합산하려고 합니다. 예상되는 출력은 다음과 같습니다.

[
    ['quantity' => 15, 'dd' => '01-Nov-2012'],
    ['quantity' => 3,  'dd' => '02-Nov-2012'],
    ['quantity' => 19, 'dd' => '03-Nov-2012'],
]

해결책:

이를 달성하려면 간단한 루프 메커니즘을 사용할 수 있습니다. 첫 번째 행부터 시작하여 'dd' 값이 출력 배열에 이미 존재하는지 확인합니다. 그렇지 않은 경우 해당 'dd'에 대한 새 항목을 만들고 '수량'을 0으로 초기화합니다.

그런 다음 각 행에 대해 출력 배열의 해당 그룹에 '수량'을 추가합니다. 모든 행이 처리될 때까지 이 프로세스를 반복합니다. 마지막으로 array_values()를 사용하여 출력 배열을 숫자 인덱싱으로 변환합니다.

다음 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 배열의 다른 열을 합산하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.