ホームページ >バックエンド開発 >PHPチュートリアル >2D 配列内のデータを列ごとにグループ化して合計するにはどうすればよいですか?

2D 配列内のデータを列ごとにグループ化して合計するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-09 03:26:02200ブラウズ

How to Group and Sum Data in a 2D Array by Column?

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'],
];

望ましい結果:

[
    ['quantity' => 15, 'dd' => '01-Nov-2012'],
    ['quantity' => 3,  'dd' => '02-Nov-2012'],
    ['quantity' => 19, 'dd' => '03-Nov-2012'],
];

実装:

これを達成するには、次の手順に従ってください:

  1. 入力配列の行を繰り返します。
  2. 各行について:

    • グループ化された配列にエントリが含まれているかどうかを確認します。現在の行の 'dd' 値によってインデックスが付けられます。
    • そうでない場合は、 'dd' 値と 0 の初期 'quantity'。
    • グループ化された配列エントリの 'quantity' 値を現在の行の 'quantity' だけ増分します。
  3. 次を使用して、グループ化された配列を数値インデックス付きの配列に変換します。 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);

このアプローチでは、入力データを「dd」列で効果的にグループ化し、「quantity」列を合計します。各グループの値を設定し、目的の出力を生成します。

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

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