PHP의 uasort를 사용하여 정렬하는 동안 키 순서 유지
쿼리:
가능한가요? PHP에 내장된 정렬 기능을 사용하여 키의 원래 순서를 유지하면서 PHP에서 연관 배열의 값을 정렬하시겠습니까?
과제:
안정적인 정렬을 달성하려면 동일한 값이 초기 키 순서를 유지하는 경우 PHP는 기본적으로 안정적인 정렬을 지원하지 않으므로 사용자 정의 정렬 기능을 사용해야 합니다.
해결책:
사용자 정의 병합 정렬, O(n*log(n)) 복잡성을 보장하고 안정성을 유지하는 다음을 사용할 수 있습니다:
<code class="php">function mergesort(&$array, $cmp_function = 'strcmp') { // Handle base cases if (count($array) < 2) return; // Split the array into halves $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); // Merge the sorted halves $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 remaining elements while ($ptr1 < count($array1)) $array[] = $array1[$ptr1++]; while ($ptr2 < count($array2)) $array[] = $array2[$ptr2++]; }</code>
대체 리소스:
정보 포럼 스레드는 다음과 같습니다. 다음 링크에서 찾을 수 있습니다: [포럼 스레드 링크]
위 내용은 PHP에서 연관 배열을 정렬하는 동안 키 순서를 유지할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!