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

特定の列で行をグループ化し、2D 配列内の別の列を合計するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-11-17 02:33:03
オリジナル
809 人が閲覧しました

How to Group Rows by a Specific Column and Sum Another Column in a 2D Array?

2D 配列内のデータのグループ化と列の合計

データ処理シナリオでは、2D 配列の行をグループ化する必要が生じる場合があります。指定された列に基づいて、各列内の別の列に値を累積します。 group.

問題ステートメント:

以下に示すような入力配列が与えられたとします:

1

2

3

4

5

6

7

[

    ['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」列を作成し、各グループ内の「数量」値を合計します。期待される出力は次のとおりです:

1

2

3

4

5

[

    ['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 コードは、解決策を示しています。

1

2

3

4

5

6

7

8

9

10

11

12

13

$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 サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
関連するチュートリアル
人気のおすすめ
最新のコース
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート