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