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'], );
Buat tatasusunan output kosong:
$out = array();
Sekarang, lalui setiap baris:
foreach ($in as $row) {
Dalam setiap baris, semak sama ada nilai dd sudah ada dalam tatasusunan $out:
if (!isset($out[$row['dd']])) {
Jika tidak, buat entri baharu untuk nilai dd dengan 'kuantiti' yang dimulakan:
$out[$row['dd']] = array( 'dd' => $row['dd'], 'quantity' => 0, );
Walau apa pun, kemas kini nilai kuantiti dengan menambah baris semasa kuantiti:
$out[$row['dd']]['quantity'] += $row['quantity'];
Akhir sekali, indeks secara numerik tatasusunan $out untuk mencapai pengurangan yang dikehendaki Tatasusunan 2D:
$out = array_values($out);
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'], ]
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!