Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Menjumlahkan Nilai Lajur dengan Cekap dalam Tatasusunan PHP Berbilang Dimensi?

Bagaimana untuk Menjumlahkan Nilai Lajur dengan Cekap dalam Tatasusunan PHP Berbilang Dimensi?

Patricia Arquette
Patricia Arquetteasal
2024-12-29 17:05:11670semak imbas

How to Efficiently Sum Column Values in Multi-Dimensional PHP Arrays?

Cara Menjumlahkan Nilai Lajur dalam Tatasusunan Berbilang Dimensi

Dalam tatasusunan berbilang dimensi, meringkaskan nilai sepanjang lajur ialah tugas biasa. Begini caranya, dengan mengambil kira cabaran set kunci bersekutu dinamik:

Penyelesaian Kes Umum dengan array_walk_recursive

Menggunakan array_walk_recursive, anda boleh meringkaskan lajur secara konsisten tanpa mengira kunci struktur:

$final = array();

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

array_column() for Exact Keys

Dari PHP 5.5 dan seterusnya, anda boleh menggunakan array_column untuk meringkaskan lajur tertentu dengan cekap:

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

Jumlah Jumlah untuk Semua Kunci Set

Jika anda mahukan jumlah agregat semua tatasusunan dalam dengan kekunci yang sepadan (seperti dalam output yang diingini), gunakan pendekatan ini:

$final = array_shift($input);

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

unset($value);

Kes Umum Penyelesaian dengan array_column

Pendekatan yang lebih maju menggunakan array_column melibatkan mengenal pasti semua kunci unik dan kemudian meringkaskan:

$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 Menjumlahkan Nilai Lajur dengan Cekap dalam Tatasusunan PHP Berbilang Dimensi?. 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