현재 위치: > 최신 기사 목록> PHP에서 민감한 사례에 민감한 버전 번호 정렬을 구현하기 위해 strnatcasecmp를 사용하는 방법은 무엇입니까?

PHP에서 민감한 사례에 민감한 버전 번호 정렬을 구현하기 위해 strnatcasecmp를 사용하는 방법은 무엇입니까?

gitbox 2025-05-19

PHP에서, strnatcasecmp는 두 줄을 비교하기위한 함수이다. 기존 문자열 비교 함수와 다릅니다. strnatcasecmp는 자연 분류 알고리즘 (자연 숫자 분류)을 사용하며 비교할 때는 대례에 민감하지 않습니다. 이 기능의 일반적인 응용 프로그램 중 하나는 버전 번호를 정렬하는 것입니다. 특히 버전 번호에 숫자와 문자가 포함될 수있는 경우 strnatcasecmp는 단순히 알파벳 순서 대신 인간 직관적 인 방식으로 정렬 할 수 있습니다.

기능 프로토 타입

 int strnatcasecmp ( string $string1 , string $string2 )

매개 변수 설명

  • $ string1 : 비교할 첫 번째 문자열.

  • $ string2 : 비교할 두 번째 문자열.

반환 값

  • $ String1$ String2 보다 작 으면 음의 정수가 반환됩니다.

  • $ string1이 $ string2 와 같으면 0을 반환하십시오.

  • $ String1$ String2 보다 큰 경우 양수 정수가 반환됩니다.

예 : 사례에 민감하지 않은 버전 번호의 자연스러운 분류

버전 번호 정렬에서 일반적으로 버전 번호의 자연 순서로 비교할 수 있기를 원합니다. 예를 들어 1.10은 1.9 이후에야합니다. StrnatcaseCMP는 알파벳 순서에만 의존하기보다는 비교할 때 숫자의 크기를 고려하기 때문에 이상적인 솔루션을 제공합니다.

버전 번호가 포함 된 배열이 있다고 가정 해 봅시다.이 버전 번호는 자연 순서로 정렬하고 Strnatcasecmp를 사용하여 달성 할 수 있다고 가정 해 봅시다.

 <?php
// 버전 번호 배열 예제
$versions = [
    "1.2.10",
    "1.10.0",
    "1.9.9",
    "1.2.2",
    "1.1.1",
];

// 사용 uasort() 종류,并사용 strnatcasecmp 비교 함수로
uasort($versions, function($a, $b) {
    return strnatcasecmp($a, $b);
});

// 输出종류后的版本号
foreach ($versions as $version) {
    echo $version . "\n";
}
?>

결과 출력 :

 1.1.1
1.2.2
1.2.10
1.9.9
1.10.0

분석:

이 예에서 버전 번호 배열은 uasort를 사용하여 정렬되고 각각의 두 버전 번호는 strnatcasecmp 로 비교됩니다. 정렬 후 결과는 인간의 직관성의 자연 순서와 일치합니다. 1.1.1 은 상단에, 1.2.10 아래에, 1.10.0은 맨 아래에 있습니다 . 1.9.9 입니다.

strnatcasecmp 의 장점은 버전 번호의 숫자를 별도의 문자로 비교하지 않고 오히려 숫자의 크기에 따라 비교한다는 것입니다. 따라서 1.10은 1.9 뒤에있을 것이며, 이는 버전 번호 분류에 대한 직관과 일치합니다.

요약:

strnatcasecmp 함수는 PHP에서 매우 유용한 도구입니다. 특히 버전 번호를 자연 순서대로 정렬 해야하는 시나리오의 경우. 문자와 숫자와 혼합 된 문자열을 처리 할뿐만 아니라 비교할 때 케이스를 자동으로 무시하여 여러 차례 사용하기에 이상적입니다.