빈 문자열은 길이가 0 인 특수 문자열입니다. strncmp를 사용하여 두 줄을 비교할 때 빈 문자열의 존재는 특히 다음 상황에서 비교 결과에 영향을 줄 수 있습니다.
문자열이 비어 있습니다 <br> strncmp가 빈 문자열을 다른 비어 있지 않은 문자열과 비교하는 데 사용되는 경우, 반환 값은 일반적으로 음수입니다 (빈 줄은 사전 순서에서 비어 있지 않은 문자열보다 작기 때문에). 예를 들어:
<span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strncmp</span></span><span>(</span><span><span class="hljs-string">''</span></span><span>, </span><span><span class="hljs-string">'hello'</span></span><span>, </span><span><span class="hljs-number">5</span></span><span>); </span><span><span class="hljs-comment">// 결과는 부정적입니다</span></span><span>
</span></span>따라서 문자열이 비어 있으면이 상황을 올바르게 처리하는 방법을 고려해야합니다.
두 개의 빈 줄의 비교 <br> 두 문자열이 빈 문자열 인 경우, strncmp는 사전 순서가 동일하기 때문에 0 리턴합니다.
<span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strncmp</span></span><span>(</span><span><span class="hljs-string">''</span></span><span>, </span><span><span class="hljs-string">''</span></span><span>, </span><span><span class="hljs-number">5</span></span><span>); </span><span><span class="hljs-comment">// 나오십시오 0</span></span><span>
</span></span> 지정된 길이는 비교하는 동안 0입니다
지정된 비교 길이가 0이면 strncmp는 두 문자열의 "첫 번째 0 자"를 비교합니다. 들어오는 문자열이 빈 문자열이더라도 strncmp는 두 개의 빈 줄을 동일하게 고려하고 0을 반환합니다.
<span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strncmp</span></span><span>(</span><span><span class="hljs-string">'abc'</span></span><span>, </span><span><span class="hljs-string">'def'</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>); </span><span><span class="hljs-comment">// 나오십시오 0</span></span><span>
</span></span>이것은 특별한 상황에서 특별한주의가 필요합니다.
빈 줄로 인한 잠재적 인 문제를 피하기 위해 다음 전략을 채택 할 수 있습니다.
빈 문자열을 확인하십시오 <br> 문자열 비교를하기 전에 먼저 문자열이 비어 있는지 확인하십시오. 문자열이 비어 있으면 비즈니스 로직에 따라 기본값을 반환하거나 비교를 직접 건너 뛰기로 결정할 수 있습니다. 예를 들어:
<span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-keyword">empty</span></span><span>(</span><span><span class="hljs-variable">$str1</span></span><span>) || </span><span><span class="hljs-keyword">empty</span></span><span>(</span><span><span class="hljs-variable">$str2</span></span><span>)) {
</span><span><span class="hljs-comment">// 빈 줄을 처리하기위한 특별한 논리</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"줄 중 하나는 비어 있습니다\n"</span></span><span>;
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strncmp</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-number">5</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$result</span></span><span>;
}
</span></span>기본값을 설정하십시오 <br> 문자열이 비어 있으면 빈 문자열의 간섭을 피하기 위해 비교하기 전에 빈 문자열에 기본값을 할당 할 수 있습니다. 예를 들어:
<span><span><span class="hljs-variable">$str1</span></span><span> = </span><span><span class="hljs-variable">$str1</span></span><span> ?: </span><span><span class="hljs-string">'default'</span></span><span>;
</span><span><span class="hljs-variable">$str2</span></span><span> = </span><span><span class="hljs-variable">$str2</span></span><span> ?: </span><span><span class="hljs-string">'default'</span></span><span>;
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strncmp</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-number">5</span></span><span>);
</span></span>이 예에서 $ str1 또는 $ str2가 비어 있으면 '기본' 문자열로 대체 한 다음 비교됩니다.
비교 길이 <br>을 합리적으로 선택하십시오 실제 개발에서 문자열을 비교할 때 적절한 비교 길이를 선택하십시오. 지정된 길이가 너무 작 으면 비교가 조기에 종료 될 수있어 비교 결과가 부정확합니다. 특히 빈 줄이나 부분적으로 빈 줄의 경우 실제 요구에 따라 적절한 길이를 결정해야합니다.
불필요한 비교를 피하려면 strlen 기능을 사용하십시오 <br> 때때로 우리는 전체 문자열을 비교할 필요없이 문자열의 실제 내용에만 관심이 있습니다. 이 시간에 먼저 문자열의 길이를 확인한 다음 비교 여부를 결정할 수 있습니다.
<span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">strlen</span></span><span>(</span><span><span class="hljs-variable">$str1</span></span><span>) > </span><span><span class="hljs-number">0</span></span><span> && </span><span><span class="hljs-title function_ invoke__">strlen</span></span><span>(</span><span><span class="hljs-variable">$str2</span></span><span>) > </span><span><span class="hljs-number">0</span></span><span>) {
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strncmp</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-number">5</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$result</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">"줄 중 하나는 비어 있습니다,비교를 건너 뛰십시오。\n"</span></span><span>;
}
</span></span>