在PHP 中, strcmp()是一個非常常用的字符串比較函數。它用於比較兩個字符串的大小,並根據比較結果返回不同的值。理解strcmp()返回值的含義對於開發中處理字符串操作非常重要。
strcmp()函數的語法如下:
<span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-title function_ invoke__">strcmp</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>
該函數接受兩個參數str1和str2 ,並返回一個整數值,表示兩個字符串的比較結果。
strcmp()返回的整數值通常有三種可能的結果:負值、零、正值。
當strcmp()返回0 時,表示兩個字符串完全相等,即它們的內容、大小寫、長度等都是一樣的。簡而言之,兩個字符串在字面上是一樣的。
<span><span><span class="hljs-variable">$str1</span></span><span> = </span><span><span class="hljs-string">"hello"</span></span><span>;
</span><span><span class="hljs-variable">$str2</span></span><span> = </span><span><span class="hljs-string">"hello"</span></span><span>;
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">strcmp</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">0</span></span><span>) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"兩個字符串相等"</span></span><span>;
}
</span></span>
當strcmp()返回負值時,表示str1小於str2 。這個比較是基於字符的ASCII 值來進行的。換句話說,如果字符串str1在字典序中排在str2之前,返回值就會是一個負數。
例如, "apple"與"banana"進行比較時,由於字母a的ASCII 值小於字母b ,所以strcmp()返回負值。
<span><span><span class="hljs-variable">$str1</span></span><span> = </span><span><span class="hljs-string">"apple"</span></span><span>;
</span><span><span class="hljs-variable">$str2</span></span><span> = </span><span><span class="hljs-string">"banana"</span></span><span>;
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">strcmp</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">0</span></span><span>) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"'apple' 小於 'banana'"</span></span><span>;
}
</span></span>
當strcmp()返回正值時,表示str1大於str2 。即, str1在字典序中排在str2之後。
例如, "banana"與"apple"進行比較時, strcmp()會返回正值,因為字母b的ASCII 值大於字母a 。
<span><span><span class="hljs-variable">$str1</span></span><span> = </span><span><span class="hljs-string">"banana"</span></span><span>;
</span><span><span class="hljs-variable">$str2</span></span><span> = </span><span><span class="hljs-string">"apple"</span></span><span>;
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">strcmp</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">0</span></span><span>) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"'banana' 大於 'apple'"</span></span><span>;
}
</span></span>
需要特別注意的是, strcmp()進行的比較是區分大小寫的。如果你不希望區分大小寫,可以使用strcoll()或strcasecmp()這類函數。
<span><span><span class="hljs-variable">$str1</span></span><span> = </span><span><span class="hljs-string">"Hello"</span></span><span>;
</span><span><span class="hljs-variable">$str2</span></span><span> = </span><span><span class="hljs-string">"hello"</span></span><span>;
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">strcmp</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">0</span></span><span>) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"字符串不同"</span></span><span>;
}
</span></span>
在這個例子中, strcmp()將返回一個非零值,因為'H'的ASCII 值與'h'不同。
strcmp()是一個功能強大的字符串比較函數,它通過返回負值、零值或正值,幫助我們理解兩個字符串的大小關係:
返回0 :兩個字符串相等。
返回負值: str1小於str2 。
返回正值: str1大於str2 。
理解這個函數的返回值,對於字符串操作的優化和調試非常有幫助。