Bagaimana untuk menukar peraturan pengisihan dalam php

PHPz
Lepaskan: 2023-04-11 09:42:42
asal
546 orang telah melayarinya

PHP ialah bahasa skrip bahagian pelayan yang digunakan secara meluas, terutamanya digunakan untuk pembangunan web. Semasa pembangunan, kadangkala anda perlu mengisih tatasusunan atau objek, dan anda perlu tahu cara menukar peraturan pengisihan.

PHP menyediakan beberapa fungsi pengisihan lalai, seperti sort(), rsort(), asort(), arsort(), ksort(), krsort(), dsb. Fungsi ini menggunakan tertib menaik secara lalai dan tidak menyediakan parameter untuk menukar peraturan pengisihan secara langsung.

Jika anda perlu menukar peraturan pengisihan, kami boleh menggunakan fungsi usort() dan uasort() dalam PHP untuk mencapainya. Fungsi usort() boleh digunakan untuk mengisih tatasusunan dalam tertib menaik atau menurun, manakala uasort() digunakan untuk mengisih tatasusunan bersekutu mengikut peraturan yang ditetapkan.

Mari kita ambil fungsi usort() sebagai contoh untuk memperkenalkan cara menukar peraturan pengisihan PHP.

Pertama, kita perlu menentukan fungsi perbandingan, yang digunakan untuk membandingkan saiz dua elemen dalam tatasusunan, dan nilai pulangan ialah jenis integer. Jika nilai pulangan adalah kurang daripada 0, ia bermakna bahawa parameter pertama adalah kurang daripada parameter kedua, dan parameter pertama diletakkan di hadapan parameter kedua jika nilai pulangan adalah lebih besar daripada 0, ia bermakna bahawa parameter pertama adalah lebih besar daripada parameter kedua, dan parameter pertama diletakkan di hadapan parameter kedua Parameter pertama diletakkan selepas parameter kedua jika nilai pulangan adalah sama dengan 0, ia bermakna kedua-dua parameter adalah sama tetap tidak berubah.

Sebagai contoh, kami mentakrifkan fungsi perbandingan berikut untuk mengisih mengikut panjang rentetan:

function cmp($a, $b) {
    if (strlen($a) == strlen($b)) {
        return 0;
    }
    return (strlen($a) < strlen($b)) ? -1 : 1;
}
Salin selepas log masuk

Kemudian, kita boleh menggunakan fungsi usort() untuk mengisih. Fungsi usort() menerima dua parameter, parameter pertama ialah tatasusunan yang hendak diisih, dan parameter kedua ialah fungsi perbandingan yang digunakan untuk perbandingan. Sebagai contoh, kami mentakrifkan tatasusunan berikut:

$arr = array("apple", "orange", "banana", "kiwi", "pear");
Salin selepas log masuk

dan kemudian gunakan fungsi usort() untuk mengisih:

usort($arr, "cmp");
Salin selepas log masuk

Di sini tatasusunan diisih mengikut panjang rentetan, dan keputusan akhir ialah:

Array
(
    [0] => kiwi
    [1] => pear
    [2] => apple
    [3] => orange
    [4] => banana
)
Salin selepas log masuk

Seperti yang anda lihat, tatasusunan diisih dari kecil ke besar mengikut panjang rentetan.

Perlu diingat bahawa fungsi perbandingan perlu memenuhi keperluan tertentu. Pertama, ia perlu menerima dua parameter dan mengembalikan nilai jenis integer. Kedua, fungsi perbandingan mestilah transitif, iaitu jika $a kurang daripada $b dan $b kurang daripada $c, maka $a mestilah kurang daripada $c. Akhir sekali, fungsi perbandingan tidak boleh mengubah nilai $a dan $b.

Apabila menggunakan fungsi usort() untuk mengisih, kita juga boleh menggunakan fungsi tanpa nama untuk mentakrifkan fungsi perbandingan, yang boleh menjimatkan masa dan tenaga dalam mentakrifkan fungsi. Contohnya:

usort($arr, function($a, $b) {
    if (strlen($a) == strlen($b)) {
        return 0;
    }
    return (strlen($a) < strlen($b)) ? -1 : 1;
});
Salin selepas log masuk

Ringkasnya, menukar penyusunan dalam PHP adalah sangat mudah, anda hanya perlu mentakrifkan fungsi perbandingan. Pengisihan boleh dilakukan dengan menggunakan nama fungsi sebagai parameter kedua bagi fungsi usort(). Sudah tentu, kita juga boleh menggunakan fungsi tanpa nama untuk memudahkan kod.

Atas ialah kandungan terperinci Bagaimana untuk menukar peraturan pengisihan dalam php. 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