Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Dalam PHP, bagaimana untuk mengisih tatasusunan berdasarkan perbandingan nilai tatasusunan?

Dalam PHP, bagaimana untuk mengisih tatasusunan berdasarkan perbandingan nilai tatasusunan?

WBOY
WBOYasal
2024-05-03 09:06:01909semak imbas

Kaedah untuk mengisih tatasusunan dalam PHP ialah: gunakan fungsi sort() untuk mengisih dalam tertib menaik. Gunakan fungsi rsort() untuk mengisih dalam tertib menurun. Gunakan fungsi asort() untuk mengisih nilai dalam tatasusunan bersekutu dalam tertib menaik. Gunakan fungsi arsort() untuk mengisih nilai dalam susunan menurun untuk tatasusunan bersekutu. Gunakan fungsi perbandingan tersuai untuk pengisihan yang lebih kompleks.

在 PHP 中,如何根据数组值的比较对数组进行排序?

Cara Mengisih Tatasusunan PHP Berdasarkan Perbandingan Nilai Tatasusunan

Dalam PHP, terdapat pelbagai cara untuk mengisih tatasusunan berdasarkan perbandingan nilai tatasusunan. Artikel ini akan memperkenalkan penggunaan fungsi terbina dalam sort(), rsort(), asort(), arsort( ) dan Cara biasa untuk mengisih tatasusunan adalah dengan fungsi perbandingan tersuai. sort()rsort()asort()arsort() 和自定义比较函数对数组进行排序的常见方法。

使用 sort() 函数:

sort() 函数对数组中的值进行从小到大的升序排列。

$arr = [3, 5, 2, 7, 1];
sort($arr);
print_r($arr); // 输出: [1, 2, 3, 5, 7]

使用 rsort() 函数:

rsort() 函数对数组中的值进行从大到小的降序排列。

$arr = [3, 5, 2, 7, 1];
rsort($arr);
print_r($arr); // 输出: [7, 5, 3, 2, 1]

使用 asort() 函数:

asort() 函数对关联数组中的值进行从小到大的升序排列,键保持不变。

$arr = [
    "name" => "John",
    "age" => 30,
    "city" => "New York"
];
asort($arr);
print_r($arr); 
// 输出: [
//     "age" => 30,
//     "city" => "New York",
//     "name" => "John"
// ]

使用 arsort() 函数:

arsort() 函数对关联数组中的值进行从大到小的降序排列,键保持不变。

$arr = [
    "name" => "John",
    "age" => 30,
    "city" => "New York"
];
arsort($arr);
print_r($arr); 
// 输出: [
//     "name" => "John",
//     "city" => "New York",
//     "age" => 30
// ]

使用自定义比较函数:

对于更复杂的排序要求,可以使用自定义比较函数。比较函数接受两个参数,并返回 -1、0 或 1,具体取决于第一个参数是否小于、等于或大于第二个参数。

function custom_sort($a, $b) {
    return strcmp($a["name"], $b["name"]);
}

$arr = [
    ["name" => "John", "age" => 30],
    ["name" => "Mary", "age" => 25],
    ["name" => "Bob", "age" => 35]
];
usort($arr, "custom_sort");
print_r($arr); 
// 输出: [
//     ["name" => "Bob", "age" => 35],
//     ["name" => "John", "age" => 30],
//     ["name" => "Mary", "age" => 25]
// ]

实战案例:

以下是一个实战案例,展示了如何使用 sort()

🎜Gunakan fungsi sort(): 🎜🎜🎜sort() fungsi mengisih nilai dalam tatasusunan dalam tertib menaik dari kecil ke besar. 🎜
$characters = [
    ["name" => "Mario", "level" => 5],
    ["name" => "Luigi", "level" => 3],
    ["name" => "Donkey Kong", "level" => 7]
];

sort($characters);
print_r($characters); 
// 输出: [
//     ["name" => "Donkey Kong", "level" => 7],
//     ["name" => "Luigi", "level" => 3],
//     ["name" => "Mario", "level" => 5]
// ]
🎜🎜Gunakan fungsi rsort(): 🎜🎜🎜rsort() Fungsi mengisih nilai dalam tatasusunan dalam tertib menurun dari besar ke kecil. 🎜rrreee🎜🎜Gunakan fungsi asort(): 🎜🎜🎜asort() Fungsi mengisih nilai dalam tatasusunan bersekutu dalam tertib menaik dari kecil ke besar, dan kunci kekal tidak berubah. 🎜rrreee🎜🎜Gunakan fungsi arsort(): 🎜🎜🎜arsort() Fungsi mengisih nilai dalam tatasusunan bersekutu dalam tertib menurun dari besar ke kecil, dan kunci kekal tidak berubah. 🎜rrreee🎜🎜Gunakan fungsi perbandingan tersuai: 🎜🎜🎜Untuk keperluan pengisihan yang lebih kompleks, anda boleh menggunakan fungsi perbandingan tersuai. Fungsi perbandingan menerima dua argumen dan mengembalikan -1, 0, atau 1, bergantung pada sama ada argumen pertama kurang daripada, sama dengan atau lebih besar daripada argumen kedua. 🎜rrreee🎜🎜Satu kes praktikal: 🎜🎜🎜Berikut ialah kes praktikal yang menunjukkan cara menggunakan fungsi sort() untuk mengisih susunan aksara permainan video dalam tertib menaik mengikut nama: 🎜rrreee

Atas ialah kandungan terperinci Dalam PHP, bagaimana untuk mengisih tatasusunan berdasarkan perbandingan nilai tatasusunan?. 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