php array statistik nilai yang berbeza

王林
Lepaskan: 2023-05-06 11:35:08
asal
419 orang telah melayarinya

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.

  1. fungsi array_count_values ​​

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
Salin selepas log masuk

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);
Salin selepas log masuk

Output:

Array(
    [1] => 2
    [2] => 1
    [3] => 3
)
Salin selepas log masuk
Salin selepas log masuk

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.

  1. Fungsi tersuai

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;
}
Salin selepas log masuk

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);
Salin selepas log masuk

Output:

Array(
    [1] => 2
    [2] => 1
    [3] => 3
)
Salin selepas log masuk
Salin selepas log masuk

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.

  1. Perbandingan prestasi

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';
Salin selepas log masuk

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';
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!