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 중국어 웹사이트의 기타 관련 기사를 참조하세요!