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