Rumah >pembangunan bahagian belakang >tutorial php >Bagaimanakah Saya Boleh Mengisih Tatasusunan Berbilang Dimensi dalam PHP mengikut Nilai?

Bagaimanakah Saya Boleh Mengisih Tatasusunan Berbilang Dimensi dalam PHP mengikut Nilai?

DDD
DDDasal
2024-12-24 01:45:10221semak imbas

How Can I Sort Multi-Dimensional Arrays in PHP by Value?

Mengisih Tatasusunan Berbilang Dimensi mengikut Nilai

Mengisih data mengikut nilai kunci tertentu dalam tatasusunan berbilang dimensi ialah tugas biasa. Ini boleh dicapai melalui penggunaan fungsi pengisihan yang ditentukan pengguna bersama dengan fungsi usort() atau uasort().

Untuk mengisih tatasusunan mengikut kekunci "pesanan", langkah berikut boleh diikuti :

  1. Tentukan fungsi isihan (PHP 5.2 atau lebih awal):
function sortByOrder($a, $b) {
    if ($a['order'] > $b['order']) {
        return 1;
    } elseif ($a['order'] < $b['order']) {
        return -1;
    }
    return 0;
}
  1. Gunakan usort() dengan penyusun tersuai:
usort($myArray, 'sortByOrder');
  1. Fungsi tanpa nama (PHP 5.3 ):
usort($myArray, function($a, $b) {
    if ($a['order'] > $b['order']) {
        return 1;
    } elseif ($a['order'] < $b['order']) {
        return -1;
    }
    return 0;
});
  1. Pengendali kapal angkasa (PHP 7):
usort($myArray, function($a, $b) {
    return $a['order'] <=> $b['order'];
});
  1. Fungsi anak panah (PHP 7.4):
usort($myArray, fn($a, $b) => $a['order'] <=> $b['order']);

Isih Berbilang Dimensi:

Untuk melanjutkan pengisihan kepada berbilang dimensi, fungsi pengisihan boleh digunakan secara rekursif:

usort($myArray, function($a, $b) {
    $retval = $a['order'] <=> $b['order'];
    if ($retval == 0) {
        $retval = $a['suborder'] <=> $b['suborder'];
        if ($retval == 0) {
            $retval = $a['details']['subsuborder'] <=> $b['details']['subsuborder'];
        }
    }
    return $retval;
});

Memelihara Kunci Persatuan:

Untuk mengekalkan perkaitan utama semasa pengisihan, gunakan uasort() dan bukannya usort(). Lihat manual PHP untuk perbandingan fungsi pengisihan tatasusunan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengisih Tatasusunan Berbilang Dimensi dalam PHP mengikut Nilai?. 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