>  기사  >  백엔드 개발  >  PHP 배열 안정 정렬: 동일한 요소의 순서 유지

PHP 배열 안정 정렬: 동일한 요소의 순서 유지

WBOY
WBOY원래의
2024-04-26 15:15:01417검색

PHP 배열의 안정적인 정렬은 다음을 통해 달성할 수 있습니다. 비교할 때 원본 인덱스를 고려하는 사용자 정의 비교기를 생성하고 uasort() 함수를 사용하여 키에 따라 값을 정렬하고 값을 원본 인덱스를 포함하는 요소로 설정합니다. ; 이 방법은 동일한 요소가 원래 순서와 동일한 정렬 순서로 되어 있는지 확인합니다.

PHP 数组稳定排序:保持相等元素的顺序

PHP 배열 안정 정렬: 동일한 요소의 순서 유지

소개

안정적인 정렬은 정렬 후 동일한 요소의 순서가 원래 순서와 동일하도록 보장합니다. 안정적인 정렬을 위해서는 다음 비교가 유효합니다.

a == b => sort(a) <= sort(b)

PHP 배열 기본 sort()rsort() 함수는 불안정합니다. 이 기사에서는 안정적인 정렬 방법을 살펴보겠습니다. sort()rsort() 函数是不稳定的。本篇文章将探究稳定排序的方法。

方法

1. 自定义比较器

使用自定义比较器,在相等元素时比较它们的原始索引:

function cmp($a, $b) {
    if ($a == $b) {
        return 0;
    }
    return $a < $b ? -1 : 1;
}

然后在 usort()uksort() 函数中使用它:

usort($arr, 'cmp');

2. 使用 uasort()

uasort() 根据键对值进行排序,ksort()

방법

1. 사용자 정의 비교기

사용자 정의 비교기를 사용하여 요소가 동일한 경우 원래 인덱스를 비교합니다.

$indices = array_keys($arr);
uasort($arr, function($a, $b) use ($indices) {
    if ($a == $b) {
        return 0;
    }
    return $indices[array_search($a, $arr)] < $indices[array_search($b, $arr)] ? -1 : 1;
});
그런 다음 usort() 또는 uksort() 함수:
$scores = [
    'John' => 90,
    'Mary' => 85,
    'Bob' => 85,
    'Alice' => 95
];

uasort($scores, function($a, $b) {
    if ($a == $b) {
        return 0;
    }
    return $a < $b ? -1 : 1;
});

print_r($scores);

2. 키를 기준으로 값을 정렬하려면 uasort()

🎜🎜uasort()를 사용하세요. , ksort()는 키를 정렬합니다. 따라서 배열의 값을 원래 인덱스를 포함하는 요소로 설정한 다음 키를 정렬할 수 있습니다. 🎜
Array
(
    [Alice] => 95
    [John] => 90
    [Bob] => 85
    [Mary] => 85
)
🎜🎜 실제 예 🎜🎜🎜 동일한 점수를 가진 학생의 원래 순서를 유지하면서 점수별로 학생 성적 배열을 정렬합니다. :🎜rrreee🎜출력:🎜rrreee🎜🎜결론🎜🎜🎜위에 나열된 방법을 사용하면 동일한 요소의 순서가 유지되도록 PHP 배열을 안정적으로 정렬할 수 있습니다. 🎜

위 내용은 PHP 배열 안정 정렬: 동일한 요소의 순서 유지의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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