ホームページ >バックエンド開発 >PHPチュートリアル >多次元配列を複数の列値でグループ化し、別の列の値を合計するにはどうすればよいですか?

多次元配列を複数の列値でグループ化し、別の列の値を合計するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-05 22:49:021043ブラウズ

How can I group a multidimensional array by multiple column values and sum another column's values?

複数の列値による多次元配列データのグループ化と列値の合計

問題:

この問題には、次の配列が含まれます。異なるデータベースにわたる複数のデータベース クエリからのデータ。目標は、2 つの列の値 (「part」と「type」) に基づいて配列要素をグループ化し、各グループの 3 番目の列 (「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>

解決策:

配列要素をグループ化するには「カウント」値を合計するには、次の関数を使用できます。

<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']) && $output_element['count'] = 0;
    $output_element['count'] += $value['count'];
  }

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

この関数は、入力配列を反復処理して、各要素の「部分」値と「タイプ」値を識別します。次に、これらの値をキーとして使用して、出力要素を作成または取得します。各キーについて、関数は「count」フィールドが存在しない場合は初期化し、その要素の「count」フィールドの値を増分します。最後に、グループ化された要素を含む配列を返します。

以上が多次元配列を複数の列値でグループ化し、別の列の値を合計するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。