当前位置: 首页> 最新文章列表> 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

理解这个函数的返回值,对于字符串操作的优化和调试非常有帮助。