PHP Bagaimana untuk mengisih tatasusunan mengikut nilai sambil mengekalkan nama kunci asal?

WBOY
Lepaskan: 2024-05-04 08:06:02
asal
689 orang telah melayarinya

PHP menyediakan dua cara untuk mengisih tatasusunan bersekutu mengikut nilai: Gunakan fungsi asort(): Isih nilai dari kecil ke besar sambil mengekalkan nama kunci asal. Menggunakan fungsi usort() dan penutupan: Isih nilai mengikut fungsi perbandingan tersuai sambil mengekalkan nama kunci asal.

PHP 如何按值对数组进行排序,同时保留原始键名?

Gunakan fungsi asort()asort() 函数

PHP 的 asort() 函数可按值对关联数组进行排序,同时保留原始键名。它接受一个关联数组作为参数,并按照从小到大的顺序对值进行排序。

<?php
$arr = [
    "apple" => 5,
    "banana" => 3,
    "orange" => 2,
    "grape" => 4,
];

asort($arr);

print_r($arr);
?>
Salin selepas log masuk

输出:

Array
(
    [orange] => 2
    [banana] => 3
    [grape] => 4
    [apple] => 5
)
Salin selepas log masuk
Salin selepas log masuk

如你所见,数组的值已按从小到大的顺序排序,但键名保留不变。

使用 usort() 函数和闭包

另一种方法是使用 usort() 函数和闭包。usort() 接受一个回调函数作为参数,该函数用于比较数组中的元素。闭包是一种匿名函数,可用作回调。

<?php
$arr = [
    "apple" => 5,
    "banana" => 3,
    "orange" => 2,
    "grape" => 4,
];

usort($arr, function ($a, $b) {
    return $a[1] - $b[1];
});

print_r($arr);
?>
Salin selepas log masuk

输出:

Array
(
    [orange] => 2
    [banana] => 3
    [grape] => 4
    [apple] => 5
)
Salin selepas log masuk
Salin selepas log masuk

在这种情况下,闭包会比较每个元素的值 ($a[1]$b[1]),并返回 -101

Fungsi asort() PHP mengisih tatasusunan bersekutu mengikut nilai sambil mengekalkan nama kunci asal. Ia menerima tatasusunan bersekutu sebagai hujah dan mengisih nilai daripada terkecil kepada terbesar. 🎜rrreee🎜Output: 🎜rrreee🎜Seperti yang anda lihat, nilai tatasusunan telah diisih dari kecil ke besar, tetapi nama kunci kekal tidak berubah. 🎜🎜🎜Gunakan fungsi dan penutupan usort()🎜🎜Cara lain ialah menggunakan fungsi dan penutupan usort(). usort() menerima fungsi panggil balik sebagai parameter, yang digunakan untuk membandingkan elemen dalam tatasusunan. Penutupan ialah fungsi tanpa nama yang boleh digunakan sebagai panggilan balik. 🎜rrreee🎜Output: 🎜rrreee🎜Dalam kes ini, penutupan membandingkan nilai setiap elemen ($a[1] dan $b[1]) , dan mengembalikan -1, 0 atau 1, bergantung pada nilai yang lebih besar. 🎜

Atas ialah kandungan terperinci PHP Bagaimana untuk mengisih tatasusunan mengikut nilai sambil mengekalkan nama kunci asal?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!