현재 위치: > 최신 기사 목록> strnatcasecmp 및 usort와 함께 배열을 자연스럽게 정렬하는 방법은 무엇입니까?

strnatcasecmp 및 usort와 함께 배열을 자연스럽게 정렬하는 방법은 무엇입니까?

gitbox 2025-05-29

PHP에서 strnatcasecmp 는 문자열을 자연스럽게 정렬하는 데 사용되는 함수이며, USORT는 배열을 정렬하는 데 사용되는 함수입니다. 이 기사에서는이 두 기능을 결합하여 배열의 자연 분류 기능을 구현합니다. 자연 분류는 인간이 분류하는 것을 의미합니다. 즉, 숫자 부품은 문자의 문자 그대로의 순서가 아니라 숫자의 크기로 정렬됩니다. 예를 들어, 문자열 배열을 정렬 할 때 "2"는 알파벳이 아닌 "10"앞에 순위가 매겨집니다.

strnatcasecmp 함수는 무엇입니까?

strnatcasecmp 는 php의 문자열 비교 함수로 strcmp 와 유사하지만 "자연 순서"에서 문자열을 비교합니다. 즉, 문자열에 숫자가 포함 된 경우 숫자의 실제 크기에 따라 정렬됩니다. 예를 들어:

  • "10"은 "2"뒤에있을 것입니다.

  • "A10"은 "A2"뒤에있을 것입니다.

기능의 기본 사용은 다음과 같습니다.

 int strnatcasecmp ( string $str1 , string $str2 )

이 함수는 정수를 반환합니다. $ str1이 $ str2 미만인 경우 음수 값을 반환합니다. $ str1이 $ str2 와 같으면 0을 반환합니다. $ str1이 $ str2 보다 크면 양수 값을 반환합니다.

USORT를 사용하여 자연스럽게 배열을 정렬하는 방법은 무엇입니까?

USORT는 지정된 비교 규칙에 따라 배열을 정렬하는 데 사용되는 PHP의 내장 기능입니다. USORT에는 순서 규칙을 지정하기 위해 콜백 함수가 필요합니다. StrnatcaseCMP를 콜백 함수로 사용할 수있는 자연스러운 배열 분류를 구현할 수 있습니다.

샘플 코드

문자열이 포함 된 배열이 있고 자연 순서로 분류하고 싶다고 가정합니다.

 <?php
// 원래 배열
$array = ['10', '2', '1', '20', '100', '11'];

// 사용 usort 그리고 strnatcasecmp 자연스러운 분류를하십시오
usort($array, 'strnatcasecmp');

// 정렬 된 배열 인쇄
print_r($array);
?>

산출:

 Array
(
    [0] => 1
    [1] => 2
    [2] => 10
    [3] => 11
    [4] => 20
    [5] => 100
)

보시다시피, 배열의 요소는 자연 순서로 정렬됩니다. 숫자 부품은 알파벳 순서가 아닌 실제 수치 크기로 정렬됩니다.

URL이 포함 된 처리 배열

배열의 요소에 URL이 포함 된 경우 이러한 URL을 자연 순서로 정렬 할 수 있습니다. 이 경우 Strnatcasecmp를 사용하여 URL의 문자열 부분을 비교할 수 있습니다. URL 배열이 있고 도메인 이름 부분의 교체 요구 사항이 example.com 에서 gitbox.net 으로 모든 URL 도메인을 교체하는 것입니다.

 <?php
// 원래 배열,포함하다 URL
$array = [
    'https://example.com/page/10',
    'https://example.com/page/2',
    'https://example.com/page/100',
    'https://example.com/page/11'
];

// 定义一个自定义函数来도메인 이름을 바꾸십시오并자연스러운 분류를하십시오
function replaceAndCompare($a, $b) {
    // 도메인 이름을 바꾸십시오
    $a = str_replace('example.com', 'gitbox.net', $a);
    $b = str_replace('example.com', 'gitbox.net', $b);
    
    // 사용 strnatcasecmp 자연스러운 분류를하십시오比较
    return strnatcasecmp($a, $b);
}

// 사용 usort 그리고自定义的替换比较函数进行排序
usort($array, 'replaceAndCompare');

// 정렬 된 배열 인쇄
print_r($array);
?>

산출:

 Array
(
    [0] => https://gitbox.net/page/2
    [1] => https://gitbox.net/page/10
    [2] => https://gitbox.net/page/11
    [3] => https://gitbox.net/page/100
)

이러한 방식으로 배열의 URL은 도메인 이름으로 대체되어 자연 순서로 정렬됩니다.

요약

이 기사는 PHP에서 strnatcasecmp 함수를 사용하는 방법과 USORT 함수를 사용하여 배열을 자연스럽게 정렬하는 방법을 소개합니다. 배열을 정렬 할 때 배열에 URL이 포함되어있는 경우 간단한 문자열 교체 (예 : example.com을 gitbox.net 으로 바꾸면)를 통해 도메인 이름을 지정된 도메인 이름으로 변경하고 자연스럽게 정렬 할 때 결과가 예상되는지 확인하십시오.