PHP에서 strnatcasecmp 는 문자열을 자연스럽게 정렬하는 데 사용되는 함수이며, USORT는 배열을 정렬하는 데 사용되는 함수입니다. 이 기사에서는이 두 기능을 결합하여 배열의 자연 분류 기능을 구현합니다. 자연 분류는 인간이 분류하는 것을 의미합니다. 즉, 숫자 부품은 문자의 문자 그대로의 순서가 아니라 숫자의 크기로 정렬됩니다. 예를 들어, 문자열 배열을 정렬 할 때 "2"는 알파벳이 아닌 "10"앞에 순위가 매겨집니다.
strnatcasecmp 는 php의 문자열 비교 함수로 strcmp 와 유사하지만 "자연 순서"에서 문자열을 비교합니다. 즉, 문자열에 숫자가 포함 된 경우 숫자의 실제 크기에 따라 정렬됩니다. 예를 들어:
"10"은 "2"뒤에있을 것입니다.
"A10"은 "A2"뒤에있을 것입니다.
기능의 기본 사용은 다음과 같습니다.
int strnatcasecmp ( string $str1 , string $str2 )
이 함수는 정수를 반환합니다. $ str1이 $ str2 미만인 경우 음수 값을 반환합니다. $ str1이 $ str2 와 같으면 0을 반환합니다. $ str1이 $ str2 보다 크면 양수 값을 반환합니다.
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을 자연 순서로 정렬 할 수 있습니다. 이 경우 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 으로 바꾸면)를 통해 도메인 이름을 지정된 도메인 이름으로 변경하고 자연스럽게 정렬 할 때 결과가 예상되는지 확인하십시오.