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
Lepaskan: 2024-12-24 01:45:10
asal
175 orang telah melayarinya

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;
}
Salin selepas log masuk
  1. Gunakan usort() dengan penyusun tersuai:
usort($myArray, 'sortByOrder');
Salin selepas log masuk
  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;
});
Salin selepas log masuk
  1. Pengendali kapal angkasa (PHP 7):
usort($myArray, function($a, $b) {
    return $a['order'] <=> $b['order'];
});
Salin selepas log masuk
  1. Fungsi anak panah (PHP 7.4):
usort($myArray, fn($a, $b) => $a['order'] <=> $b['order']);
Salin selepas log masuk

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

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!

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