Bagaimana untuk Menghimpunkan Baris dalam Tatasusunan 2D mengikut Satu Lajur dan Jumlahkan Satu Lagi?

Susan Sarandon
Lepaskan: 2024-11-23 01:45:15
asal
833 orang telah melayarinya

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

Mengurangkan Tatasusunan 2D dengan Menghimpunkan Baris mengikut Satu Lajur dan Menjumlahkan Satu Lagi dalam Setiap Kumpulan

Dalam senario ini, anda berusaha untuk memanipulasi 2D tatasusunan dengan menyusun barisnya berdasarkan lajur tertentu sambil mengagregatkan nilai lajur lain dalam setiap kumpulan dicipta.

Untuk menangani keperluan ini, pertimbangkan untuk menggunakan pendekatan berulang melalui baris tatasusunan input:

$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'],
);
Salin selepas log masuk

Buat tatasusunan output kosong:

$out = array();
Salin selepas log masuk

Sekarang, lalui setiap baris:

foreach ($in as $row) {
Salin selepas log masuk

Dalam setiap baris, semak sama ada nilai dd sudah ada dalam tatasusunan $out:

if (!isset($out[$row['dd']])) {
Salin selepas log masuk

Jika tidak, buat entri baharu untuk nilai dd dengan 'kuantiti' yang dimulakan:

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

Walau apa pun, kemas kini nilai kuantiti dengan menambah baris semasa kuantiti:

$out[$row['dd']]['quantity'] += $row['quantity'];
Salin selepas log masuk

Akhir sekali, indeks secara numerik tatasusunan $out untuk mencapai pengurangan yang dikehendaki Tatasusunan 2D:

$out = array_values($out);
Salin selepas log masuk

Hasilnya, anda memperoleh tatasusunan ringkas dengan baris terkumpul:

var_dump($out);

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

Atas ialah kandungan terperinci Bagaimana untuk Menghimpunkan Baris dalam Tatasusunan 2D mengikut Satu Lajur dan Jumlahkan Satu Lagi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan