Rumah >pembangunan bahagian belakang >masalah PHP >php array statistik nilai yang berbeza
Dalam pembangunan PHP, tatasusunan ialah jenis data yang biasa digunakan Kami biasanya menggunakan tatasusunan untuk menyimpan satu siri data. Kadangkala, kita perlu mengira nilai yang berbeza dalam tatasusunan, seperti mengira bilangan kali elemen berbeza muncul dalam tatasusunan. Artikel ini akan menunjukkan kepada anda cara mengira nilai yang berbeza dalam tatasusunan menggunakan PHP.
PHP mempunyai fungsi terbina dalam array_count_values
yang boleh digunakan untuk mengira bilangan kejadian setiap nilai dalam tatasusunan. Prototaip fungsi ini adalah seperti berikut:
array_count_values(array $array): array
Fungsi ini mengambil tatasusunan sebagai parameter dan mengembalikan tatasusunan bersekutu, di mana kunci adalah nilai yang berbeza dalam tatasusunan asal dan nilainya ialah bilangan kali nilai muncul dalam tatasusunan asal. Contohnya:
$array = array(1, 1, 2, 3, 3, 3); $count = array_count_values($array); print_r($count);
Output:
Array( [1] => 2 [2] => 1 [3] => 3 )
Di sini tatasusunan asal ialah [1, 1, 2, 3, 3, 3]
Dalam tatasusunan bersekutu yang dikembalikan oleh fungsi, kunci 1
muncul dua kali dalam tatasusunan asal, dan kunci 2
muncul dalam tatasusunan asal Ia muncul sekali dalam tatasusunan, dan kunci 3
muncul tiga kali dalam tatasusunan asal.
Perlu diambil perhatian bahawa fungsi ini hanya sah untuk tatasusunan indeks dan tatasusunan bersekutu Untuk jenis tatasusunan lain, tatasusunan kosong akan dikembalikan.
Selain menggunakan fungsi array_count_values
, kita juga boleh menulis fungsi sendiri untuk melengkapkan fungsi yang serupa. Berikut ialah contoh fungsi:
function array_count_unique(array $array): array { $counts = array(); foreach ($array as $value) { if (isset($counts[$value])) { $counts[$value]++; } else { $counts[$value] = 1; } } return $counts; }
Fungsi ini menerima tatasusunan dan mengembalikan tatasusunan bersekutu di mana kuncinya ialah nilai yang berbeza dalam tatasusunan asal dan nilainya ialah bilangan kali nilai itu muncul dalam tatasusunan asal. Idea pelaksanaan khusus adalah untuk merentasi tatasusunan asal, mengira bilangan kejadian setiap nilai, dan kemudian menggunakan nilai sebagai kunci dan bilangan kejadian sebagai nilai untuk membina tatasusunan hasil.
Kita boleh menguji fungsi menggunakan kod berikut:
$array = array(1, 1, 2, 3, 3, 3); $count = array_count_unique($array); print_r($count);
Output:
Array( [1] => 2 [2] => 1 [3] => 3 )
mempunyai hasil yang sama seperti fungsi array_count_values
.
Perlu diambil perhatian bahawa fungsi ini hanya sah untuk tatasusunan indeks dan tatasusunan bersekutu Untuk jenis tatasusunan lain, tatasusunan kosong akan dikembalikan.
Walaupun menggunakan fungsi array_count_values
terbina dalam PHP dan fungsi tersuai boleh melengkapkan fungsi mengira nilai yang berbeza dalam tatasusunan, mereka mungkin tidak begitu cekap dari segi prestasi akan berbeza-beza. Kita boleh menguji prestasi kedua-dua kaedah dengan menggunakan fungsi microtime
.
Berikut ialah contoh ujian menggunakan fungsi array_count_values
:
$array = range(1, 10000); shuffle($array); $start = microtime(true); $count = array_count_values($array); $end = microtime(true); echo 'array_count_values: ' . ($end - $start) . ' seconds';
Berikut ialah contoh ujian menggunakan fungsi tersuai:
$array = range(1, 10000); shuffle($array); $start = microtime(true); $count = array_count_unique($array); $end = microtime(true); echo 'array_count_unique: ' . ($end - $start) . ' seconds';
Input kedua-dua contoh ujian adalah sama. Ia adalah tatasusunan rawak dengan panjang 10000 dan mengeluarkan masa pelaksanaan setiap kaedah. Kami boleh menjalankan dua coretan kod ini beberapa kali dan membandingkan purata masa berjalan kedua-dua fungsi.
Dalam persekitaran yang saya uji, perbezaan masa antara kedua-dua kaedah tidak jelas. Biasanya fungsi array_count_unique
lebih cepat sedikit daripada fungsi array_count_values
, tetapi perbezaan antara kedua-dua kaedah itu tidak besar. Oleh itu, dalam aplikasi praktikal, kaedah yang sesuai boleh dipilih mengikut keperluan.
Ringkasan
Artikel ini memperkenalkan cara menggunakan PHP untuk mengira nilai berbeza dalam tatasusunan. Kita boleh menggunakan fungsi array_count_values
terbina dalam PHP, atau kita boleh menulis fungsi sendiri. Kedua-dua kaedah mencapai fungsi yang sama, tetapi dengan prestasi yang sedikit berbeza. Dalam aplikasi praktikal, kaedah yang sesuai boleh dipilih mengikut keperluan.
Atas ialah kandungan terperinci php array statistik nilai yang berbeza. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!