Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Perjalanan dimensi pengisihan tatasusunan berbilang dimensi PHP: daripada satu dimensi kepada berbilang dimensi

Perjalanan dimensi pengisihan tatasusunan berbilang dimensi PHP: daripada satu dimensi kepada berbilang dimensi

王林
王林asal
2024-04-29 21:09:02296semak imbas

Tatasusunan satu dimensi diisih menggunakan fungsi sort(), tatasusunan dua dimensi diisih mengikut elemen dalaman menggunakan fungsi usort() dan tatasusunan dimensi tinggi diisih mengikut elemen hierarki menggunakan fungsi usort() bersarang berbilang lapisan . Kuncinya ialah menyelesaikan masalah penguraian lapisan demi lapisan.

Perjalanan dimensi pengisihan tatasusunan berbilang dimensi PHP: daripada satu dimensi kepada berbilang dimensi

Perjalanan dimensi pengisihan tatasusunan berbilang dimensi PHP: dari satu dimensi kepada berbilang dimensi

Dalam PHP, tatasusunan ialah struktur data yang berkuasa yang boleh menyimpan pelbagai jenis data, termasuk tatasusunan berbilang dimensi. Tatasusunan multidimensi ialah tatasusunan yang mengandungi tatasusunan lain, yang membolehkan kami membuat struktur data yang kompleks.

Mengisih tatasusunan berbilang dimensi boleh menjadi tugas yang mencabar, tetapi memahami konsep di sebaliknya adalah penting. Dalam artikel ini, kami akan melakukan perjalanan ke dalam dimensi dan mempelajari cara mengisih tatasusunan berbilang dimensi bagi satu, dua dimensi dan lebih tinggi menggunakan fungsi terbina dalam PHP.

Isih tatasusunan satu dimensi

Isih tatasusunan satu dimensi ialah bentuk yang paling mudah. Menggunakan fungsi sort(), kita boleh mengisih elemen dalam tatasusunan dalam tertib menaik: sort() 函数,我们可以按升序对数组中元素进行排序:

<?php
$arr = [5, 2, 8, 3, 1];
sort($arr);
print_r($arr); // 输出:[1, 2, 3, 5, 8]
?>

二维数组排序

二维数组的排序稍微复杂一些。我们可以根据其内部数组中的元素进行排序。例如,假设我们有一个二维数组,其中包含学生成绩:

<?php
$students = [
    ['name' => 'Alice', 'score' => 90],
    ['name' => 'Bob', 'score' => 80],
    ['name' => 'Carol', 'score' => 70]
];
?>

要根据分数对学生进行降序排序,我们可以使用 usort() 函数:

<?php
usort($students, function($a, $b) {
    return $b['score'] <=> $a['score'];
});
print_r($students); // 输出:[
                        //     ['name' => 'Alice', 'score' => 90],
                        //     ['name' => 'Bob', 'score' => 80],
                        //     ['name' => 'Carol', 'score' => 70]
                        // ]
?>

高维度数组排序

对于更高维度的数组,排序的概念是相同的。例如,让我们考虑一个三维数组,其中包含三个学生班级的信息:

<?php
$classes = [
    [
        ['name' => 'Alice', 'grade' => 'A'],
        ['name' => 'Bob', 'grade' => 'B'],
        ['name' => 'Carol', 'grade' => 'C']
    ],
    [
        ['name' => 'Dave', 'grade' => 'A'],
        ['name' => 'Eve', 'grade' => 'B'],
        ['name' => 'Frank', 'grade' => 'C']
    ],
    [
        ['name' => 'George', 'grade' => 'A'],
        ['name' => 'Helen', 'grade' => 'B'],
        ['name' => 'Ian', 'grade' => 'C']
    ]
];
?>

要根据学生的成绩按降序对所有三个班级进行排序,我们可以使用多层 usort() 函数嵌套:

<?php
usort($classes, function($a, $b) {
    usort($a, function($c, $d) {
        return $d['grade'] <=> $c['grade'];
    });
    usort($b, function($c, $d) {
        return $d['grade'] <=> $c['grade'];
    });
    return $b[0]['grade'] <=> $a[0]['grade'];
});
print_r($classes); // 输出:[
                        //     [
                        //         ['name' => 'Alice', 'grade' => 'A'],
                        //         ['name' => 'Bob', 'grade' => 'B'],
                        //         ['name' => 'Carol', 'grade' => 'C']
                        //     ],
                        //     [
                        //         ['name' => 'Dave', 'grade' => 'A'],
                        //         ['name' => 'Eve', 'grade' => 'B'],
                        //         ['name' => 'Frank', 'grade' => 'C']
                        //     ],
                        //     [
                        //         ['name' => 'George', 'grade' => 'A'],
                        //         ['name' => 'Helen', 'grade' => 'B'],
                        //         ['name' => 'Ian', 'grade' => 'C']
                        //     ]
                        // ]
?>

理解多维数组排序的关键是分解问题,并使用嵌套的 usort()rrreee

Isih tatasusunan dua dimensi🎜🎜Isihan tatasusunan dua dimensi adalah lebih rumit sedikit. Kita boleh mengisih berdasarkan elemen dalam tatasusunan dalamannya. Sebagai contoh, katakan kita mempunyai tatasusunan 2D yang mengandungi gred pelajar: 🎜rrreee🎜 Untuk mengisih pelajar dalam tertib menurun berdasarkan markah mereka, kita boleh menggunakan fungsi usort(): 🎜rrreee🎜Dimensi Tinggi Isih Tatasusunan🎜 🎜Untuk tatasusunan dimensi yang lebih tinggi, konsep pengisihan adalah sama. Sebagai contoh, mari kita pertimbangkan tatasusunan tiga dimensi yang mengandungi maklumat tentang tiga kelas pelajar: 🎜rrreee🎜 Untuk mengisih ketiga-tiga kelas dalam tertib menurun berdasarkan gred pelajar, kita boleh menggunakan usort() Fungsi bersarang: 🎜rrreee🎜Kunci untuk memahami pengisihan tatasusunan berbilang dimensi adalah untuk menguraikan masalah dan menggunakan fungsi <code>usort() bersarang untuk menyelesaikannya lapisan demi lapisan. Dengan cara ini kita boleh mengisih struktur data yang kompleks dengan dimensi sewenang-wenangnya dengan mudah. 🎜

Atas ialah kandungan terperinci Perjalanan dimensi pengisihan tatasusunan berbilang dimensi PHP: daripada satu dimensi kepada berbilang dimensi. 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