ホームページ >バックエンド開発 >PHPチュートリアル >2D 配列内の行を 1 つの列でグループ化し、別の列を合計する方法

2D 配列内の行を 1 つの列でグループ化し、別の列を合計する方法

Susan Sarandon
Susan Sarandonオリジナル
2024-11-23 01:45:15906ブラウズ

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

行を 1 つの列ごとにグループ化し、各グループ内で別の列を合計することで 2D 配列を縮小します

このシナリオでは、2D 配列を操作しようとします各グループ内の別の列の値を集計しながら、特定の列に基づいて行を編成することで配列を作成します。

このニーズに対処するには、入力配列の行を介して反復的なアプローチを採用することを検討してください:

$in = array(
    ['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'],
);

空の出力配列を作成します:

$out = array();

次に、各行を調べます。

foreach ($in as $row) {

各行内で、dd 値が次のとおりであるかどうかを確認します。 $out 配列に既に存在します:

if (!isset($out[$row['dd']])) {

そうでない場合は、初期化された 'quantity' を使用して dd 値の新しいエントリを作成します:

$out[$row['dd']] = array(
    'dd' => $row['dd'],
    'quantity' => 0,
);

関係なく、次の方法で数量値を更新します。現在の行の数量を追加します:

$out[$row['dd']]['quantity'] += $row['quantity'];

最後に、$out 配列に数値インデックスを付けて、目的の削減を実現します。 2D 配列:

$out = array_values($out);

その結果、グループ化された行を含む要約された配列が得られます:

var_dump($out);

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

以上が2D 配列内の行を 1 つの列でグループ化し、別の列を合計する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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