PHP 배열의 안정적인 정렬은 다음을 통해 달성할 수 있습니다. 비교할 때 원본 인덱스를 고려하는 사용자 정의 비교기를 생성하고 uasort() 함수를 사용하여 키에 따라 값을 정렬하고 값을 원본 인덱스를 포함하는 요소로 설정합니다. ; 이 방법은 동일한 요소가 원래 순서와 동일한 정렬 순서로 되어 있는지 확인합니다.
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 )
위 내용은 PHP 배열 안정 정렬: 동일한 요소의 순서 유지의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!