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

Susan Sarandon
リリース: 2024-11-23 01:45:15
オリジナル
851 人が閲覧しました

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

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