ホームページ >バックエンド開発 >PHPチュートリアル >多次元配列を 2 つの列でグループ化し、各グループの値を合計するにはどうすればよいでしょうか?
多次元配列データを 2 つの列でグループ化し、各グループの値を合計する
2 つの別々のデータベース クエリの結果を結合して作成された配列を考えます。次のようなもの:
$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 = &$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>
これ関数は入力配列を反復処理し、「part」値と「type」値の組み合わせをキーとする要素を出力配列に設定します。各出力要素について、「part」、「type」、および「count」フィールドが適切に設定され、「count」フィールドがまだ設定されていない場合は必ずゼロに初期化されます。この関数は、出力配列から値の配列を返します。
この関数を $arr1 に適用すると、目的の結果が得られます。
$arr2 = [ ['part' => '1', 'type' => '1', 'count' => 15], ['part' => '2', 'type' => '1', 'count' => 10], ['part' => '2', 'type' => '2', 'count' => 5] ];
以上が多次元配列を 2 つの列でグループ化し、各グループの値を合計するにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。