PHP에서, strnatcmp 함수는 두 줄의 자연 순서 (자연 정렬)를 비교하기위한 도구이다. strnatcmp는 문자의 ASCII 값뿐만 아니라 숫자의 크기로 정렬되기 때문에 strcmp 와 같은 일반 문자열 비교 함수와 다릅니다. 개발자 가이 기능에 의해 반환 된 긍정적 및 음수 값이 어떻게 작동하는지 이해하고 이러한 결과를 올바르게 처리하는 방법을 이해하는 것이 매우 중요합니다.
strnatcmp 함수의 프로토 타입은 다음과 같습니다.
<span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-title function_ invoke__">strnatcmp</span></span><span> ( </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$str1</span></span><span> , </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$str2</span></span><span> )
</span></span>
이 함수는 두 개의 문자열 매개 변수 $ st1 과 $ str2를 사용하고 두 문자열의 자연 순서 비교 결과를 나타내는 정수 값을 반환합니다.
$ str1이 $ str2 보다 작 으면 음의 값이 반환됩니다.
$ str1 이 $ str2 와 같으면 반환 0;
$ str1이 $ str2 보다 큰 경우 양수 값이 반환됩니다.
부정적인 값 반환 :
strnatcmp가 음수 값을 반환 할 때, 첫 번째 문자열 $ str1 은 자연적인 종류의 두 번째 String $ str2 전에 순위가 매겨 져 있습니다. 예를 들어:
<span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">strnatcmp</span></span><span>(</span><span><span class="hljs-string">"apple10"</span></span><span>, </span><span><span class="hljs-string">"apple2"</span></span><span>); </span><span><span class="hljs-comment">// 출력 음수 값</span></span><span>
</span></span>
이 예에서, "Apple10"은 숫자 10이 숫자 2보다 크기 때문에 "Apple2" 전에 자연스럽게 정렬됩니다.
반환 0 :
두 줄이 자연 분류에서 동일하면 strnatcmp는 0을 반환합니다.
<span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">strnatcmp</span></span><span>(</span><span><span class="hljs-string">"apple2"</span></span><span>, </span><span><span class="hljs-string">"apple2"</span></span><span>); </span><span><span class="hljs-comment">// 산출0</span></span><span>
</span></span>
여기서 두 줄은 정확히 동일하므로 0을 반환하십시오.
긍정적 값을 반환합니다.
strnatcmp가 양수 값을 반환 할 때, 첫 번째 문자열 $ str1은 두 번째 String $ str2 후에 자연적인 종류로 순위가 매겨 졌음을 의미합니다. 예를 들어:
<span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">strnatcmp</span></span><span>(</span><span><span class="hljs-string">"apple20"</span></span><span>, </span><span><span class="hljs-string">"apple2"</span></span><span>); </span><span><span class="hljs-comment">// 산출正值</span></span><span>
</span></span>
이 예에서, "Apple20" 은 "Apple2" 이후 자연적인 종류로 순위가 매겨지기 때문에 숫자 20은 숫자 2보다 크기 때문입니다.
간단한 비교 :
두 줄 중 어느 것이 더 큰지 결정하려면 리턴 값을 직접 사용할 수 있습니다. 예를 들어:
<span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strnatcmp</span></span><span>(</span><span><span class="hljs-variable">$str1</span></span><span>, </span><span><span class="hljs-variable">$str2</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$result</span></span><span> < </span><span><span class="hljs-number">0</span></span><span>) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"<span class="hljs-subst">$str1</span></span></span><span> 순위 </span><span><span class="hljs-subst">$str2</span></span><span> 앞쪽";
} </span><span><span class="hljs-keyword">elseif</span></span><span> (</span><span><span class="hljs-variable">$result</span></span><span> > </span><span><span class="hljs-number">0</span></span><span>) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"<span class="hljs-subst">$str1</span></span></span><span> 순위 </span><span><span class="hljs-subst">$str2</span></span><span> 나중에";
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"<span class="hljs-subst">$str1</span></span></span><span> 그리고 </span><span><span class="hljs-subst">$str2</span></span><span> 같은";
}
</span></span>
이 처리 방법은 정렬 또는 비교가 필요한 시나리오에 적합합니다.
정렬에 사용 :
strnatcmp는 종종 자연스럽게 배열, 특히 숫자를 포함하는 문자열을 다룰 때 사용됩니다. 배열을 자연 순서로 정렬하려면 strnatcmp 와 함께 USORT 함수를 사용할 수 있습니다.
<span><span><span class="hljs-variable">$array</span></span><span> = [</span><span><span class="hljs-string">"apple10"</span></span><span>, </span><span><span class="hljs-string">"apple2"</span></span><span>, </span><span><span class="hljs-string">"apple20"</span></span><span>, </span><span><span class="hljs-string">"apple1"</span></span><span>];
</span><span><span class="hljs-title function_ invoke__">usort</span></span><span>(</span><span><span class="hljs-variable">$array</span></span><span>, </span><span><span class="hljs-string">'strnatcmp'</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$array</span></span><span>);
</span></span>
이것은 출력됩니다 :
<span><span>Array
(
[</span><span><span class="hljs-meta">0</span></span><span>] => apple1
[</span><span><span class="hljs-meta">1</span></span><span>] => apple2
[</span><span><span class="hljs-meta">2</span></span><span>] => apple10
[</span><span><span class="hljs-meta">3</span></span><span>] => apple20
)
</span></span>
복잡한 상황 처리 :
때로는 날짜, 버전 번호 등이 포함 된 문자열과 같은 더 복잡한 문자열을 비교해야합니다.이 경우 Strnatcmp는 문자에 의해 잘못된 문자열의 수치 부분에 대해 걱정하지 않고 자연 순서로 비교할 수 있습니다.
<span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strnatcmp</span></span><span>(</span><span><span class="hljs-string">"version 10.1"</span></span><span>, </span><span><span class="hljs-string">"version 9.9"</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$result</span></span><span> > </span><span><span class="hljs-number">0</span></span><span>) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"version 10.1 비교하다 version 9.9 고쳐 쓰다"</span></span><span>;
}
</span></span>
출력은 다음과 같습니다. 버전 10.1은 버전 9.9보다 업데이트되며 StrNATCMP가 자연 순서로 버전 번호를 올바르게 처리 함을 보여줍니다.
strnatcmp는 자연 분류 규칙을 통해 문자열을 비교하는 매우 유용한 PHP 함수입니다. 특히 숫자로 문자열을 다룰 때보다 직관적 인 분류 방법을 제공 할 수 있습니다. 리턴 값의 긍정적 인 의미와 부정적인 의미를 이해하고 올바르게 처리 할 수 있으면 개발자가 문자열 비교 및 정렬 작업을보다 효율적으로 수행하는 데 도움이 될 수 있습니다.