>백엔드 개발 >PHP 튜토리얼 >두 개의 열과 각 그룹의 합계 값으로 다차원 배열을 어떻게 그룹화합니까?

두 개의 열과 각 그룹의 합계 값으로 다차원 배열을 어떻게 그룹화합니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-06 01:16:02830검색

How do you group a multidimensional array by two columns and sum values for each group?

다차원 배열 데이터를 두 열로 그룹화하고 각 그룹의 값을 합산

두 개의 개별 데이터베이스 쿼리 결과를 결합하여 생성된 배열을 생각해 보세요. 다음과 유사합니다.

$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]
];

목표는 이 배열을 'part' 및 'type' 열로 그룹화하고 각 그룹의 'count' 값 합계를 계산하는 것입니다.

수행하려면 이를 위해 다음 함수를 활용할 수 있습니다.

<code class="php">function groupByPartAndType($input) {
  $output = Array();

  foreach($input as $value) {
    $output_element = &amp;$output[$value['part'] . "_" . $value['type']];
    $output_element['part'] = $value['part'];
    $output_element['type'] = $value['type'];
    !isset($output_element['count']) &amp;&amp; $output_element['count'] = 0;
    $output_element['count'] += $value['count'];
  }

  return array_values($output);
}</code>

이 함수는 입력 배열을 반복하고 'part' 및 'type' 값의 조합으로 입력된 요소로 출력 배열을 채웁니다. 각 출력 요소에 대해 'part', 'type' 및 'count' 필드를 적절하게 설정하여 'count' 필드가 아직 설정되지 않은 경우 0으로 초기화되도록 합니다. 이 함수는 출력 배열에서 값의 배열을 반환합니다.

이 함수를 $arr1에 적용하면 원하는 결과를 얻을 수 있습니다.

$arr2 = [
    ['part' => '1', 'type' => '1', 'count' => 15],
    ['part' => '2', 'type' => '1', 'count' => 10],
    ['part' => '2', 'type' => '2', 'count' => 5]
];

위 내용은 두 개의 열과 각 그룹의 합계 값으로 다차원 배열을 어떻게 그룹화합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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