Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Menghimpunkan Baris dalam Tatasusunan 2D mengikut Satu Lajur dan Jumlahkan Satu Lagi?

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

Susan Sarandon
Susan Sarandonasal
2024-11-23 01:45:15933semak imbas

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'],
);

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!

Kenyataan:
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