Rumah > Soal Jawab > teks badan
Saya menggabungkan dua tatasusunan (kedua-duanya diambil daripada jadual mysql yang berbeza) dan sekarang saya mahu menjumlahkan semua elemen dalam tatasusunan dengan nilai yang sama.
$merged_arr = array_merge($reg, $rel);
Array ( [0] => Array ( [DEPARTMENT] => LEAFSPRINGDIRECT [BASIC INCOME] => 3035.37 [OT PAY] => 0 ) [1] => Array ( [DEPARTMENT] => MUFFLERDIRECT [BASIC INCOME] => 24962.09 [OT PAY] => 5358.76 ) [2] => Array ( [DEPARTMENT] => MUFFLERDIRECT [BASIC INCOME] => 14082.080000000002 [OT PAY] => 3248.4 ) )
Ini yang saya cuba, tetapi saya terpaksa menggunakan pernyataan if-else berulang kali.
foreach($merged_arr as $key => $val) { // echo $val['BASIC INCOME']."<br>"; // echo array_keys(array_values($new_arr)[$key])[$count]."-".array_values(array_values($new_arr)[$key])[$count]."<br>"; if(array_values(array_values($new_arr)[$key])[$count] == "RADIATORDIRECT") { $new_arr['BASIC INCOME'] += '...'; } $count++; }
Tatasusunan yang saya mahukan sepatutnya kelihatan seperti ini:
Array ( [0] => Array ( [DEPARTMENT] => LEAFSPRINGDIRECT [BASIC INCOME] => 3035.37 [OT PAY] => 0 ) [1] => Array ( [DEPARTMENT] => MUFFLERDIRECT [BASIC INCOME] => 39044.17 [OT PAY] => 8607.16 ) )
Adakah cara yang lebih mudah? Terima kasih terlebih dahulu.
P粉4640820612023-09-11 13:52:23
Saya akan melakukan ini dari segi SQL:
SELECT DEPARTMENT, SUM(`BASIC INCOME`) AS `BASIC INCOME`, SUM(`OT PAY`) AS `OT PAY` FROM ( SELECT DEPARTMENT, `BASIC INCOME`, `OT PAY` FROM `table_a` -- WHERE ... UNION ALL SELECT DEPARTMENT, `BASIC INCOME`, `OT PAY` FROM `table_b` -- WHERE ... ) UNIONS GROUP BY DEPARTMENT