많은 시나리오에서 파일 이름별로 정렬해야합니다. 사전 정렬과 같은 일반적인 분류 방법은 예상치 못한 결과로 이어질 수 있습니다. 예를 들어, dictionary by dictionary, file2.txt는 "2"가 "1"보다 작기 때문에 file10.txt 전에 순위가 매겨집니다. 그러나 사용자는 일반적으로 파일 이름을 숫자 순서로 정렬하기를 원합니다. 즉, File2.txt는 "Natural Sinding"이라고하는 File10.txt 에 배치해야합니다.
PHP의 strnatcasecmp 함수는이 요구 사항을 충족하도록 설계되었습니다. 두 줄을 비교하고 자연 분류 규칙에 따라 분류 할 수 있습니다. strnatcasecmp 는 파일 이름 정렬에 매우 적합한 "사례에 민감한"자연 분류 방법입니다.
자연 분류는 인간 직관적 인 분류를 기반으로합니다. 예를 들어, 파일 이름 파일 1 , file2 , file10 의 경우 자연 정렬 결과는 다음과 같습니다.
file1
file2
file10
사전 정렬 결과 대신 :
file1
file10
file2
StrnatcaseCMP 는 PHP에서 두 줄을 비교하고 자연 분류 규칙에 따라 비교하는 매우 유용한 기능입니다. 이 함수의 구문은 다음과 같습니다.
int strnatcasecmp ( string $string1 , string $string2 )
$ string1 과 $ string2 는 비교할 두 줄입니다.
기능 반환 값 :
$ String1 이 $ String2 보다 작 으면 음의 정수가 반환됩니다.
$ string1이 $ string2 와 같으면 0을 반환하십시오.
$ String1 이 $ String2 보다 큰 경우 양수 정수가 반환됩니다.
이 기능을 통해 파일 이름의 자연스러운 정렬을 쉽게 구현할 수 있습니다. 다음은 strnatcasecmp를 사용하여 파일 이름을 정렬하는 방법을 보여주는 예입니다.
다음 파일 이름이 있다고 가정합니다.
$files = ['file10.txt', 'file2.txt', 'file1.txt', 'file20.txt', 'file11.txt'];
파일 이름이 숫자 순서로 배열되도록 이러한 파일 이름을 자연스럽게 정렬하려고합니다. 우리는 strnatcasecmp를 사용하여 달성 할 수 있습니다.
<?php
$files = ['file10.txt', 'file2.txt', 'file1.txt', 'file20.txt', 'file11.txt'];
// 사용 usort 그리고 strnatcasecmp 자연스러운 분류를하십시오
usort($files, 'strnatcasecmp');
// 정렬 된 파일 이름을 출력하십시오
print_r($files);
?>
파일 이름 $ 파일 배열을 정의합니다.
USORT 기능을 사용하여 배열을 정렬하여 배열과 콜백 기능을 매개 변수로 정렬 하십시오. 여기서 우리는 strnatcasecmp를 USORT 에 콜백 함수로 전달합니다.
정렬이 완료된 후 $ 파일 배열의 파일 이름은 자연 분류 규칙에 따라 배열됩니다.
Array
(
[0] => file1.txt
[1] => file2.txt
[2] => file10.txt
[3] => file11.txt
[4] => file20.txt
)
보시다시피 파일 이름은 이미 숫자 순서로 정렬되었습니다. 이러한 방식으로 File2.txt 는 File10.txt 보다 앞서 있습니다.
strnatcmp 및 strnatcasecmp 는 모두 자연 분류를 위해 PHP에 사용되는 기능입니다. 이 둘의 차이점은 다음과 같습니다.
strnatcmp 는 사례에 민감합니다.
strnatcasecmp 는 사례에 민감합니다.
파일 이름의 사례 차이를 무시하려면 strnatcasecmp를 사용할 수 있습니다. 그렇지 않으면 strnatcmp를 사용하도록 선택할 수 있습니다.
strcmp 와 같은 일반 문자열 비교 함수를 사용하여 정렬 할 때 "file2.txt"및 "file10.txt"와 같은 문제가 발생할 수 있으며 결과는 직관적 인 수치 순서로 배열되지 않습니다. StrnatcaseCMP는 문자열이 숫자 순서로 비교되도록 보장 할 수 있으며, 특히 자연스러운 정렬이 필요한 파일 이름, 버전 번호 등과 관련하여 사용자의 기대에 더 부합합니다.