Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Mengisih Tatasusunan PHP mengikut Nilai 'OptionNumber' Subarray?

Bagaimana untuk Mengisih Tatasusunan PHP mengikut Nilai 'OptionNumber' Subarray?

Susan Sarandon
Susan Sarandonasal
2024-12-08 02:32:09804semak imbas

How to Sort a PHP Array by a Subarray's

Tatasusunan Isih PHP mengikut Nilai Subarray: Panduan Komprehensif

Dalam PHP, tatasusunan ialah struktur data yang sangat diperlukan untuk mengatur dan memanipulasi data. Kadangkala, ia menjadi perlu untuk mengisih tatasusunan ini berdasarkan nilai dalam subarraynya. Artikel ini meneroka kaedah yang paling berkesan untuk mengisih tatasusunan mengikut nilai subarray, khususnya memfokuskan pada medan optionNumber.

Untuk bermula, pertimbangkan contoh berikut:

$array = [
    [
        "configuration_id" => 10,
        "id" => 1,
        "optionNumber" => 3,
        "optionActive" => 1,
        "lastUpdated" => "2010-03-17 15:44:12"
    ],

    [
        "configuration_id" => 9,
        "id" => 1,
        "optionNumber" => 2,
        "optionActive" => 1,
        "lastUpdated" => "2010-03-17 15:44:12"
    ],

    [
        "configuration_id" => 8,
        "id" => 1,
        "optionNumber" => 1,
        "optionActive" => 1,
        "lastUpdated" => "2010-03-17 15:44:12"
    ]
];

Objektifnya adalah untuk mengatur $array dalam susunan tambahan berdasarkan optionNumber, menghasilkan tatasusunan tersusun berikut:

$sortedArray = [
    [
        "configuration_id" => 8,
        "id" => 1,
        "optionNumber" => 1,
        "optionActive" => 1,
        "lastUpdated" => "2010-03-17 15:44:12"
    ],

    [
        "configuration_id" => 9,
        "id" => 1,
        "optionNumber" => 2,
        "optionActive" => 1,
        "lastUpdated" => "2010-03-17 15:44:12"
    ],

    [
        "configuration_id" => 10,
        "id" => 1,
        "optionNumber" => 3,
        "optionActive" => 1,
        "lastUpdated" => "2010-03-17 15:44:12"
    ]
];

Kepada mencapai pengisihan ini, fungsi usort PHP terbukti sebagai alat yang berkesan. Begini cara ia boleh dilaksanakan:

function cmp_by_optionNumber($a, $b) {
  return $a["optionNumber"] - $b["optionNumber"];
}

usort($array, "cmp_by_optionNumber");

Dalam kaedah ini, cmp_by_optionNumber ialah fungsi perbandingan yang ditentukan pengguna yang membandingkan nilai optionNumber bagi dua tatasusunan input. Fungsi mengembalikan nilai negatif jika optionNumber tatasusunan pertama kurang daripada yang kedua, sifar jika sama, dan nilai positif jika optionNumber tatasusunan pertama lebih besar daripada yang kedua. Dengan menggunakan fungsi perbandingan ini, usort menyusun $array dengan cekap dalam tertib menaik medan optionNumber.

Untuk PHP versi 5.3 dan ke atas, disyorkan untuk menggunakan fungsi tanpa nama untuk pendekatan yang lebih bersih:

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

Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa jika nilai optionNumber adalah rentetan, penolakan dalam fungsi perbandingan mungkin membawa kepada keputusan yang tidak betul. Dalam kes sedemikian, pertimbangkan untuk menggunakan pendekatan berikut:

usort($array, function ($a, $b) {
    return strcmp($a['optionNumber'], $b['optionNumber']);
});

Akhir sekali, dalam PHP versi 7.0 dan kemudian, pengendali kapal angkasa <=> boleh dimanfaatkan dan bukannya penolakan untuk mengelakkan masalah limpahan/pemangkasan, terutamanya apabila berurusan dengan nombor yang besar:

usort($array, function ($a, $b) {
    return $a['optionNumber'] <=> $b['optionNumber'];
});

Dengan melaksanakan salah satu kaedah yang diterangkan, anda boleh menyusun tatasusunan PHP dengan berkesan berdasarkan nilai subarray, memastikan bahawa data anda disusun dengan cara yang bermakna dan mudah.

Atas ialah kandungan terperinci Bagaimana untuk Mengisih Tatasusunan PHP mengikut Nilai 'OptionNumber' Subarray?. 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