>백엔드 개발 >PHP 튜토리얼 >PHP 원래 키 이름을 유지하면서 값을 기준으로 배열을 정렬하는 방법은 무엇입니까?

PHP 원래 키 이름을 유지하면서 값을 기준으로 배열을 정렬하는 방법은 무엇입니까?

WBOY
WBOY원래의
2024-05-04 08:06:02746검색

PHP는 값별로 연관 배열을 정렬하는 두 가지 방법을 제공합니다. asort() 함수 사용: 원래 키 이름을 유지하면서 값을 작은 것부터 큰 것까지 정렬합니다. usort() 함수 및 클로저 사용: 원래 키 이름을 유지하면서 사용자 정의 비교 함수로 값을 정렬합니다.

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

asort() 함수 사용asort() 函数

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

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

asort($arr);

print_r($arr);
?>

输出:

Array
(
    [orange] => 2
    [banana] => 3
    [grape] => 4
    [apple] => 5
)

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

使用 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);
?>

输出:

Array
(
    [orange] => 2
    [banana] => 3
    [grape] => 4
    [apple] => 5
)

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

PHP의 asort() 함수는 원래 키 이름을 유지하면서 값을 기준으로 연관 배열을 정렬합니다. 연관 배열을 인수로 받아들이고 값을 가장 작은 것부터 가장 큰 것까지 정렬합니다. 🎜rrreee🎜출력: 🎜rrreee🎜보시다시피 배열의 값은 작은 것부터 큰 것 순으로 정렬되었지만 키 이름은 변경되지 않았습니다. 🎜🎜🎜usort() 함수와 클로저 사용🎜🎜또 다른 방법은 usort() 함수와 클로저를 사용하는 것입니다. usort()는 배열의 요소를 비교하는 데 사용되는 매개변수로 콜백 함수를 허용합니다. 클로저는 콜백으로 사용할 수 있는 익명 함수입니다. 🎜rrreee🎜출력: 🎜rrreee🎜이 경우 클로저는 각 요소($a[1]$b[1])의 값을 비교하고 다음을 반환합니다. 어느 값이 더 큰지에 따라 -1, 0 또는 1. 🎜

위 내용은 PHP 원래 키 이름을 유지하면서 값을 기준으로 배열을 정렬하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.