當前位置: 首頁> 最新文章列表> strcmp 返回值是啥意思?一文看懂0、正值、負值代表的含義

strcmp 返回值是啥意思?一文看懂0、正值、負值代表的含義

gitbox 2025-08-13

在PHP 中, strcmp()是一個非常常用的字符串比較函數。它用於比較兩個字符串的大小,並根據比較結果返回不同的值。理解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>

該函數接受兩個參數str1str2 ,並返回一個整數值,表示兩個字符串的比較結果。

返回值的含義

strcmp()返回的整數值通常有三種可能的結果:負值、零、正值。

1. 返回0的情況

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>

2. 返回負值的情況

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>) &lt; </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>

3. 返回正值的情況

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>) &gt; </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

理解這個函數的返回值,對於字符串操作的優化和調試非常有幫助。