현재 위치: > 최신 기사 목록> 버전 번호 비교에 strnatcasecmp를 사용하는 방법은 무엇입니까?

버전 번호 비교에 strnatcasecmp를 사용하는 방법은 무엇입니까?

gitbox 2025-05-20

프로그램을 작성할 때는 종종 버전 번호를 비교해야합니다. 예를 들어 두 버전 번호의 순서를 비교하거나 표시시 버전 번호의 자연 순서로 정렬하십시오. 기존 문자열 비교 함수 strcmp () 또는 strcasecmp () 를 사용하여 버전 번호 비교를 수행 할 수는 있지만 버전 번호의 "자연 분류"규칙, 즉 숫자 크기의 비교를 고려하지 않습니다.

다행히도 PHP는 매우 실용적인 기능 StrnatcaseCmp () 를 제공하며, 이는 숫자의 크기 관계를 고려하여 "자연적으로 분류 된"방식으로 두 버전 숫자를 비교할 수 있습니다. 이 기사는 strnatcasecmp () 함수를 사용하여 버전 번호 비교를 수행하고 자연스러운 정렬을 구현하는 방법을 소개합니다.

자연 분류 란 무엇입니까?

전통적인 문자열 비교에서 숫자는 문자의 문자 순서로 비교됩니다. 예를 들어:

 strcmp('10', '2'); // 반환 값은보다 큽니다0

위의 비교에서, '10'은 '2' 보다 큰 것으로 간주되며, 이는 분명히 우리의 직관적 인 버전 번호를 준수하지 않습니다.

자연 분류의 목표는 숫자를 문자열보다는 "수치 값"으로 비교하는 것입니다. 따라서 '10'은 '2' 이후에 순위가 높아야합니다.

strnatcasecmmp 함수 소개

strnatcasecmp () 는 자연 분류 규칙을 기반으로 두 문자열을 비교하는 PHP가 제공하는 함수이지만 사례에 민감합니다. 이 기능은 종종 버전 번호 비교와 같은 숫자별로 정렬 해야하는 시나리오에서 사용됩니다.

기능 프로토 타입

 int strnatcasecmp ( string $string1 , string $string2 )
  • 매개 변수 :

    • $ string1 : $ string2 와 비교 한 첫 번째 문자열.

    • $ string2 : 두 번째 문자열은 $ String1 과 비교됩니다.

  • 반품 값 :

    • $ string1$ string2 보다 작 으면 음수 값이 반환됩니다.

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

    • $ String1$ string2 보다 큰 경우 양수 값이 반환됩니다.

버전 번호 비교에는 strnatcasecmp를 사용하십시오

1.2.101.2.2의 두 가지 버전 번호가 있다고 가정하고 크기를 비교하고 올바른 정렬은 1.2.2 전에 1.2.2 이어야합니다. strnatcasecmp () 함수를 사용하여이를 수행 할 수 있습니다.

샘플 코드 :

 <?php
$version1 = '1.2.10';
$version2 = '1.2.2';

if (strnatcasecmp($version1, $version2) < 0) {
    echo "$version1 is less than $version2\n";
} elseif (strnatcasecmp($version1, $version2) > 0) {
    echo "$version1 is greater than $version2\n";
} else {
    echo "$version1 is equal to $version2\n";
}
?>

산출:

 1.2.10 is greater than 1.2.2

이 예에서, strnatcasecmp ()는 자연 분류 규칙에 따라 1.2.10이 1.2.2 보다 크다는 것을 올바르게 판단합니다.

자연 분류의 응용 시나리오

버전 번호 비교 외에도 strnatcasecmp ()는 자연스러운 분류가 필요한 다른 많은 시나리오에서 유용합니다. 예를 들어:

  • 파일 이름으로 버전 번호를 정렬하십시오.

  • 다운로드 목록이 표시되면 패키지를 버전 번호별로 정렬하십시오.

  • 숫자와 문자로 문자열을 정렬하십시오.

예 : 버전 번호 목록을 정렬하십시오

버전 번호 목록이 있고 자연 분류 규칙으로 정렬하고 싶다고 가정합니다. strnatcasecmp () 와 결합 된 usort () 함수를 사용하여 구현할 수 있습니다.

 <?php
$versions = ['1.2.10', '1.2.2', '1.1.1', '1.10.0', '1.2.9'];

usort($versions, function($a, $b) {
    return strnatcasecmp($a, $b);
});

print_r($versions);
?>

산출:

 Array
(
    [0] => 1.1.1
    [1] => 1.2.2
    [2] => 1.2.9
    [3] => 1.2.10
    [4] => 1.10.0
)

위에서 볼 수 있듯이 USORT () 함수는 자연 분류 규칙에 따라 버전 번호를 정렬하여 올바른 순서를 보장합니다.

요약

strnatcasecmp () 는 특히 버전 번호 비교 또는 자연 분류가 필요할 때 매우 유용한 기능입니다. 전통적인 문자열 비교 함수와 다르며 숫자가 포함 된 문자열을 올바르게 처리 할 수있어 인간 직관과 일치하는 숫자를 비교할 수 있습니다. 두 버전 번호를 비교하든 버전 번호 목록을 정렬하든 StrnatcaseCmp () 는 매우 좋습니다.


이 기사가 PHP에서 strnatcasecmp () 함수를 더 잘 이해하고 사용하여 버전 번호 비교 및 ​​자연 분류를 달성하는 데 도움이되기를 바랍니다.