다차원 배열 데이터를 여러 열로 그룹화하고 값 집계
문제 설명:
귀하 두 개의 개별 데이터베이스 쿼리의 데이터를 결합하는 다차원 배열이 있습니다. 배열은 "부분", "주소", "유형" 및 "개수"를 포함하는 속성을 가진 레코드로 구성됩니다. 목표는 "part" 및 "type" 값을 기준으로 배열 요소를 그룹화하고 각 그룹 내 "count" 값의 합계를 계산하는 것입니다.
입력 예:
<code class="php">$arr1 = [ ['part' => '1', 'address' => 'aaa', 'type' => '1', 'count' => 5], ['part' => '1', 'address' => 'bbb', 'type' => '1', 'count' => 5], ['part' => '1', 'address' => 'ccc', 'type' => '1', 'count' => 5], ['part' => '2', 'address' => 'aaa', 'type' => '1', 'count' => 5], ['part' => '2', 'address' => 'bbb', 'type' => '1', 'count' => 5], ['part' => '2', 'address' => 'ccc', 'type' => '2', 'count' => 5] ];</code>
예상 출력:
<code class="php">$arr2 = [ ['part' => '1', 'type' => '1', 'count' => 15], ['part' => '2', 'type' => '1', 'count' => 10], ['part' => '2', 'type' => '2', 'count' => 5] ];</code>
해결책:
원하는 그룹화 및 집계를 달성하기 위해 다음을 활용할 수 있습니다. PHP의 배열 조작 함수. 다음 함수를 고려해 보세요.
<code class="php">function groupByPartAndType($input) { $output = Array(); foreach($input as $value) { $output_element = & $output[$value['part'] . "_" . $value['type']]; $output_element['part'] = $value['part']; $output_element['type'] = $value['type']; !isset($output_element['count']) && $output_element['count'] = 0; $output_element['count'] += $value['count']; } return array_values($output); }</code>
이 함수를 입력 배열 $arr1에 적용하면 원하는 출력 $arr2를 얻을 수 있습니다. 출력 배열의 각 요소는 해당 "개수" 값의 합계와 함께 동일한 "부품" 및 "유형" 값을 공유하는 데이터 포인트 그룹을 나타냅니다.
대체 접근 방식:
두 데이터베이스 쿼리가 모두 동일한 데이터베이스 서버에서 발생하는 경우 잠재적으로 SQL의 GROUP BY 기능을 사용하여 데이터베이스 자체 내에서 그룹화 및 집계를 수행할 수 있으므로 PHP에서 후처리가 필요하지 않습니다.
위 내용은 PHP에서 다차원 배열 데이터를 여러 열로 그룹화하고 값을 집계하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!