uasort를 사용하여 PHP 정렬에서 키 순서 유지
uasort 함수를 사용하여 PHP에서 연관 배열을 정렬할 때 여러 키가 동일한 값을 공유하더라도 원래 키 순서를 유지하는 안정적인 정렬.
솔루션
PHP는 더 이상 기본적으로 안정적인 정렬을 지원하지 않으므로 사용자 정의 함수 필수:
<code class="php">function mergesort(&$array, $cmp_function = 'strcmp') { // Base cases for arrays of size < 2 if (count($array) < 2) return; // Split the array in half $halfway = count($array) / 2; $array1 = array_slice($array, 0, $halfway); $array2 = array_slice($array, $halfway); // Recursively sort the halves mergesort($array1, $cmp_function); mergesort($array2, $cmp_function); // Handle case if $array1 is entirely less than $array2 if (call_user_func($cmp_function, end($array1), $array2[0]) < 1) { $array = array_merge($array1, $array2); return; } // Merge the two sorted arrays $array = array(); $ptr1 = $ptr2 = 0; while ($ptr1 < count($array1) && $ptr2 < count($array2)) { if (call_user_func($cmp_function, $array1[$ptr1], $array2[$ptr2]) < 1) { $array[] = $array1[$ptr1++]; } else { $array[] = $array2[$ptr2++]; } } // Merge the remainder while ($ptr1 < count($array1)) $array[] = $array1[$ptr1++]; while ($ptr2 < count($array2)) $array[] = $array2[$ptr2++]; return; }</code>
사용법
간단히 mergesort 함수를 사용하여 연관 배열을 정렬하고 이를 첫 번째 인수로 전달하고 값 비교를 위한 익명 함수( 선택사항):
<code class="php">uasort($arr, function($a, $b){ return ($a == $b)?1:($a - $b); });</code>
위 내용은 uasort를 사용하여 PHP에서 연관 배열을 정렬하는 동안 키 순서를 어떻게 유지할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!