Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Mengira Jumlah Lajur dengan Cekap dalam Tatasusunan Berbilang Dimensi Tidak Sekata?

Bagaimana untuk Mengira Jumlah Lajur dengan Cekap dalam Tatasusunan Berbilang Dimensi Tidak Sekata?

Susan Sarandon
Susan Sarandonasal
2024-12-24 14:45:14663semak imbas

How to Efficiently Calculate Column Totals in Irregular Multi-Dimensional Arrays?

Cara Mengira Jumlah Lajur dalam Tatasusunan Berbilang Dimensi

Pertimbangkan tatasusunan berbilang dimensi di mana unsur-unsur disusun dalam baris dan lajur, tetapi set kunci mungkin berbeza secara dinamik. Tugasnya adalah untuk mengira jumlah nilai dalam setiap lajur, tanpa mengira variasi utama.

Kaedah Array_Walk_Recursive

Untuk penyelesaian umum di mana tatasusunan dalam boleh mempunyai kunci unik, gunakan array_walk_recursive():

$final = array();

array_walk_recursive($input, function($item, $key) use (&$final){
    $final[$key] = isset($final[$key]) ?  $item + $final[$key] : $item;
});

Array_Column Kaedah

Jika nilai kunci tertentu perlu dijumlahkan, array_column() boleh digunakan:

array_sum(array_column($input, 'gozhi')); // Sums the 'gozhi' column

Untuk Tatasusunan Dalaman Seragam

Jika semua tatasusunan dalam mempunyai kunci yang sama, dapatkan kunci permulaan struktur:

$final = array_shift($input);

foreach ($final as $key => &$value){
   $value += array_sum(array_column($input, $key));
}    

unset($value);

Kes Umum dengan Array_Column

Ekstrak kunci unik dan lakukan jumlah lajur:

$final = array();

foreach($input as $value)
    $final = array_merge($final, $value);

foreach($final as $key => &$value)
    $value = array_sum(array_column($input, $key));

unset($value);

Atas ialah kandungan terperinci Bagaimana untuk Mengira Jumlah Lajur dengan Cekap dalam Tatasusunan Berbilang Dimensi Tidak Sekata?. 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