Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Pengisihan Tatasusunan Berbilang Dimensi PHP: Panduan Komprehensif dan Amalan Terbaik

Pengisihan Tatasusunan Berbilang Dimensi PHP: Panduan Komprehensif dan Amalan Terbaik

王林
王林asal
2024-04-29 17:39:01696semak imbas

Panduan pengisihan tatasusunan berbilang dimensi: Fungsi terbina dalam: array_multisort(): Isih mengikut berbilang lajur. usort(): Isih menggunakan fungsi perbandingan yang ditentukan pengguna. Fungsi tersuai: Fungsi rekursif: Isih elemen bersarang secara rekursif. Pengisihan semula jadi: Gunakan natsort() untuk mengisih elemen rentetan secara semula jadi. Kes praktikal: Isih tatasusunan berbilang dimensi mengikut gred purata, nama dan gred tertinggi.

Pengisihan Tatasusunan Berbilang Dimensi PHP: Panduan Komprehensif dan Amalan Terbaik

Pengisihan Tatasusunan Berbilang Dimensi PHP: Panduan Komprehensif dan Amalan Terbaik

Pengenalan

Isih ialah tugas biasa yang sering dihadapi apabila bekerja dengan tatasusunan berbilang dimensi. Artikel ini akan menyediakan panduan komprehensif yang merangkumi pelbagai teknik pengisihan tatasusunan berbilang dimensi, dengan contoh praktikal.

Fungsi terbina dalam

1. array_multisort()

Menggunakan fungsi array_multisort(), anda boleh mengisih tatasusunan berbilang dimensi berdasarkan berbilang lajur. Sintaksnya adalah seperti berikut: array_multisort() 函数,您可以根据多个列对多维数组排序。语法如下:

array_multisort($arr, SORT_ASC, SORT_DESC, ...);

其中:

  • $arr 是需要排序的多维数组。
  • SORT_ASCSORT_DESC 指定排序顺序(升序/降序)。

2. usort()

usort() 函数使用用户定义的比较函数对数组排序。对于多维数组,自定义比较函数需要比较两个数组的元素,语法如下:

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

自定义函数

1. 递归函数

如果需要对数组中的嵌套元素进行递归排序,可以使用递归函数。以下是示例:

function sortMultiArrayRecursively($arr) {
    foreach ($arr as &$item) {
        if (is_array($item)) {
            sortMultiArrayRecursively($item);
        }
    }
    asort($arr);
}

2. 自然排序

PHP 中的 natsort()

function sortMultiArrayNaturally($arr) {
    foreach ($arr as &$item) {
        if (is_array($item)) {
            sortMultiArrayNaturally($item);
        } else {
            $item = strval($item);
        }
    }
    natsort($arr);
}

di mana:

  • $arr ialah tatasusunan berbilang dimensi yang perlu diisih.
  • SORT_ASC dan SORT_DESC tentukan susunan isihan (menaik/menurun).
2. usort()

usort() Fungsi mengisih tatasusunan menggunakan fungsi perbandingan yang ditentukan pengguna. Untuk tatasusunan berbilang dimensi, fungsi perbandingan tersuai perlu membandingkan elemen dua tatasusunan Sintaks adalah seperti berikut:

$students = [
    [
        'name' => 'Alice',
        'scores' => [85, 90, 95]
    ],
    [
        'name' => 'Bob',
        'scores' => [92, 88, 91]
    ],
    [
        'name' => 'Charlie',
        'scores' => [80, 85, 90]
    ]
];
Fungsi tersuai

1 elemen bersarang dalam tatasusunan, Fungsi rekursif boleh digunakan. Berikut ialah contoh:

// 自定义比较函数
function cmpAverageScore($a, $b) {
    return (array_sum($a['scores']) / count($a['scores'])) < (array_sum($b['scores']) / count($b['scores']));
}

// 排序
usort($students, 'cmpAverageScore');

2. Isih semula jadi

Fungsi natsort() dalam PHP boleh mengisih rentetan secara semula jadi (dengan mengambil kira nombor akaun). Untuk elemen rentetan dalam tatasusunan berbilang dimensi, anda boleh menggunakan kod berikut:

// 排序姓名
usort($students, function($a, $b) { return strcmp($a['name'], $b['name']); });

// 按平均成绩降序排序
array_multisort($students, SORT_DESC, SORT_REGULAR);

Contoh praktikal

🎜 Katakan anda mempunyai tatasusunan berbilang dimensi yang mengandungi gred pelajar: 🎜
function cmpMaxScore($a, $b) {
    return max($a['scores']) < max($b['scores']);
}

usort($students, 'cmpMaxScore');
🎜🎜Isih mengikut gred purata dalam susunan menaik: 🎜rrreee🎜 🎜 Isih mengikut nama dalam tertib menaik dan kemudian mengikut gred purata dalam tertib menurun: 🎜🎜rrreee🎜🎜Isih mengikut gred tertinggi dalam tertib menurun: 🎜🎜rrreee🎜🎜Kesimpulan🎜🎜🎜Ia adalah penting untuk menguasai teknik tatasusunan PHP membolehkan anda mengisih dalam pelbagai cara Menyusun dan menganalisis data yang kompleks. Dengan panduan dan contoh praktikal yang disediakan dalam artikel ini, anda boleh menggunakan teknik ini dengan yakin pada kali seterusnya anda bekerja dengan tatasusunan berbilang dimensi. 🎜

Atas ialah kandungan terperinci Pengisihan Tatasusunan Berbilang Dimensi PHP: Panduan Komprehensif dan Amalan Terbaik. 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