2D 配列内のデータのグループ化と列の合計
データ処理シナリオでは、2D 配列の行をグループ化する必要が生じる場合があります。指定された列に基づいて、各列内の別の列に値を累積します。 group.
問題ステートメント:
以下に示すような入力配列が与えられたとします:
[ ['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' の新しいエントリを作成し、'quantity' を 0 に初期化します。
次に、行ごとに、出力配列内の対応するグループに 'quantity' を追加します。すべての行が処理されるまで、このプロセスを繰り返します。最後に、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 中国語 Web サイトの他の関連記事を参照してください。