Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Mengisih Tatasusunan dan Data dalam PHP?

Bagaimana untuk Mengisih Tatasusunan dan Data dalam PHP?

Linda Hamilton
Linda Hamiltonasal
2025-01-02 15:36:411012semak imbas

How to Sort Arrays and Data in PHP?

Bagaimanakah saya boleh mengisih tatasusunan dan data dalam PHP?

Asas Tatasusunan Satu Dimensi

Ini termasuk tatasusunan berbilang dimensi, termasuk tatasusunan objek dan pengisihan satu tatasusunan berdasarkan yang lain.

Isih Fungsi:

  • isih
  • isih
  • isih
  • isih
  • natsort
  • natcasesort
  • ksort
  • krsort

Multi Tatasusunan Dimensi, Termasuk Tatasusunan Objek

PHP memerlukan fungsi perbandingan tersuai untuk mengisih nilai yang kompleks.

Langkah:

  1. Buat fungsi perbandingan yang mengambil dua elemen dan mengembalikan:

    • 0 jika elemen adalah sama.
    • Nilai kurang daripada 0 jika nilai pertama lebih rendah.
    • Nilai lebih besar daripada 0 jika nilai pertama lebih tinggi.
  2. Gunakan salah satu daripada ini fungsi:

    • usort
    • uasort
    • uksort

Perbandingan Numerik Tersuai

Jika menyusun mengikut angka kunci:

function cmp(array $a, array $b) {
    return $a['baz'] - $b['baz'];
}

Objek

Jika mengisih tatasusunan objek:

function cmp($a, $b) {
    return $a->baz - $b->baz;
}

Isih mengikut Pelbagai Medan

Untuk pengisihan utama mengikut satu medan (cth., "foo") dan pengisihan sekunder oleh yang lain (cth., "baz"):

function cmp(array $a, array $b) {
    if (($cmp = strcmp($a['foo'], $b['foo'])) !== 0) {
        return $cmp;
    } else {
        return $a['baz'] - $b['baz'];
    }
}

Isih ke dalam Pesanan Manual

Untuk mengisih mengikut susunan tertentu (cth., "foo", "bar", "baz"):

function cmp(array $a, array $b) {
    static $order = array('foo', 'bar', 'baz');
    return array_search($a['foo'], $order) - array_search($b['foo'], $order);
}

Mengisih Satu Tatasusunan Berdasarkan Satu Lagi

Untuk mengisih satu Tatasusunan berdasarkan satu lagi:

array_multisort($array1, $array2);

Array_column

Setakat PHP 5.5.0, anda boleh menggunakan array_column untuk mengekstrak lajur tertentu dan mengisih tatasusunan dengan sewajarnya:

array_multisort(array_column($array, 'foo'), SORT_DESC, $array);

Atas ialah kandungan terperinci Bagaimana untuk Mengisih Tatasusunan dan Data 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