Untuk pembangun PHP, selalunya perlu melakukan pelbagai operasi pada tatasusunan, seperti penggabungan, pencarian, pengisihan, dsb. Apabila kita perlu menjumlahkan nilai kunci dalam tatasusunan, bagaimana kita melakukannya?
Dalam PHP, anda boleh menggunakan berbilang kaedah untuk mencari jumlah kunci tertentu dalam tatasusunan Empat kaedah penjumlahan berbeza ditunjukkan di bawah melalui kes:
Cara pertama untuk menjumlahkan ialah menggunakan gelung untuk melintasi tatasusunan dan menambah setiap nilai kunci, dan akhirnya dapatkan hasil penjumlahan:
<?php $array = array(1, 2, 3, 4, 5); $sum = 0; for ($i = 0; $i < count($array); $i++) { $sum += $array[$i]; } echo "数组求和结果为:".$sum; ?>
Seperti yang anda boleh lihat, kami menggunakan gelung for untuk melintasi keseluruhan tatasusunan, gunakan $sum untuk menyimpan hasil penjumlahan akhir dan menambah elemen dalam tatasusunan setiap kali Hasil keluaran akhir ialah: 数组求和结果为:15
Kelemahan kaedah ini ialah ia perlu menggelung tatasusunan berulang kali, yang akan menjejaskan prestasi skrip apabila jumlah data tatasusunan adalah besar.
PHP menyediakan fungsi array_sum(), yang boleh menjumlahkan semua elemen dalam tatasusunan dengan mudah Seperti berikut:
<?php $array = array(1, 2, 3, 4, 5); echo "数组求和结果为:" . array_sum($array); ?>
Seperti yang anda lihat, tatasusunan dihantar sebagai parameter kepada fungsi array_sum() Fungsi ini akan menjumlahkan semua elemen dalam tatasusunan dan mengembalikan hasilnya ialah: 数组求和结果为:15
Berbanding dengan kaedah pertama, menggunakan fungsi array_sum() secara langsung menyediakan operasi jumlah Kod ini lebih mudah dan lebih mudah difahami, tetapi kelemahannya ialah mungkin terdapat sekatan pada kekunci tatasusunan.
Terdapat cara lain untuk menjumlahkan dalam PHP, iaitu menggunakan fungsi array_reduce() untuk menggelung melalui tatasusunan dan bandingkan kekunci Nilai diproses secara berulang, kodnya adalah seperti berikut:
<?php $array = array(1, 2, 3, 4, 5); $sum = array_reduce($array, function($carry, $item) { $carry += $item; return $carry; }); echo "数组求和结果为:" . $sum; ?>
Kaedah ini perlu lulus dalam dua parameter, tatasusunan dan fungsi pemprosesan Dalam fungsi, $carry mewakili pengiraan terakhir hasil, dan $item mewakili elemen yang sedang diproses.
Fungsi array_reduce() akan memproses tatasusunan masuk secara berulang, menghantar satu elemen ke dalam fungsi pemprosesan setiap kali, beroperasi pada elemen, dan akhirnya mengembalikan hasil pemprosesan akhir ialah: 数组求和结果为:15
Kelebihan kaedah ini ialah berbanding dengan kaedah pertama, operasi sewenang-wenangnya boleh dilakukan pada elemen tatasusunan melalui fungsi penutupan Berbanding dengan fungsi array_sum(), ia lebih fleksibel dalam beberapa kes.
Tiga kaedah di atas digunakan untuk menyelesaikan kunci dan nilai satu dimensi tatasusunan. Apabila ia melibatkan tatasusunan berbilang dimensi Apabila , tatasusunan perlu dikembangkan secara rekursif sebelum pemprosesan penjumlahan boleh dilakukan.
Mari kita lihat cara menggunakan rekursi untuk melaksanakan pemprosesan penjumlahan tatasusunan berbilang dimensi:
<?php $array = array( 1, 2, array( 3, 4, array(5, 6, 7) ) ); function array_sum_recursive($input) { $sum = 0; foreach ($input as $item) { if (is_array($item)) { $sum += array_sum_recursive($item); } else if (is_numeric($item)) { $sum += $item; } } return $sum; } echo "多维数组求和结果为:".array_sum_recursive($array); ?>
Melalui fungsi array_sum_recursive(), kita boleh merentasi setiap elemen bagi tatasusunan berbilang dimensi, Dan setiap sub-tatasusunan dijumlahkan secara rekursif, dan akhirnya hasil penjumlahan tatasusunan berbilang dimensi dikembalikan. Hasil keluarannya ialah: 多维数组求和结果为:28
Walaupun kaedah rekursif untuk melaksanakan penjumlahan tatasusunan berbilang dimensi adalah lebih rumit, ia amat fleksibel dan sangat praktikal apabila berurusan dengan tatasusunan bersarang berbilang peringkat.
Dalam pembangunan projek sebenar, kita boleh memilih kaedah berbeza di atas untuk mengira jumlah kunci tatasusunan mengikut keperluan berbeza, menimbang prestasi dan kebolehbacaan.
Atas ialah kandungan terperinci Bagaimana untuk mencari jumlah kunci dalam tatasusunan dalam php. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!