Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menukar peraturan pengisihan dalam php

Bagaimana untuk menukar peraturan pengisihan dalam php

PHPz
PHPzasal
2023-04-11 09:10:58497semak imbas

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;
}

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");

dan kemudian gunakan fungsi usort() untuk mengisih:

usort($arr, "cmp");

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

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

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;
});

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!

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