php中的strcmp()函數,是用來比較兩個字符串的大小,它返回的結果是int型的。該函數的返回值有三種可能:0表示兩個字符串相等,正整數表示第一個字符串大于第二個字符串,負整數表示第一個字符串小于第二個字符串。
比如有兩個字符串“abc”和“ac”,使用strcmp()進行比較,結果為負整數-1,因為“abc”在字典序意義下小于“ac”。
再比如有兩個字符串“123”和“abc”,使用strcmp()進行比較,結果為正整數,因為“123”在字典序意義下大于“abc”。
但有一點需要注意的是,strcmp()在比較時是按照字母的ASCII值進行比較的,而不是按字符串長度比較;如果兩個字符串長度相等,但對應的字符不同,則從第一對不相同的字符開始比較。
$str1 = "abc";
$str2 = "ac";
$result = strcmp($str1, $str2);
echo $result; // 輸出 -1
$str1 = "123";
$str2 = "abc";
$result = strcmp($str1, $str2);
echo $result; // 輸出 1
$str1 = "apple";
$str2 = "app";
$result = strcmp($str1, $str2);
echo $result; // 輸出 1
從上面的例子中,我們可以得到strcmp()函數的三種結果,并且可以看出其比較規則,不論字符串中有什么符號或數字都只比較字母的ASCII碼。
有時候我們會用到strcasecmp()這個函數,該函數是對strcmp()函數的不區分大小寫的版本,與strcmp()函數不同的是,strcasecmp()函數比較時不區分字符大小寫。
$str1 = "APPLE";
$str2 = "apple";
$result = strcasecmp($str1, $str2);
echo $result; // 輸出 0
$str1 = "World";
$str2 = "wor";
$result = strcasecmp($str1, $str2);
echo $result; // 輸出 1
另外,當我們比較兩個變量是否相等時,也可以使用“==”這個運算符,它也能夠比較兩個字符串;但要注意的是,“==”只比較值是否相等,而不管兩個字符串在字典序方面的大小,這點與strcmp()函數是不同的。
$str1 = "abc";
$str2 = "abc";
if ($str1 == $str2) {
echo "相等";
} else {
echo "不相等";
} // 輸出 相等
$str1 = "abc";
$str2 = "ac";
if ($str1 == $str2) {
echo "相等";
} else {
echo "不相等";
} // 輸出 不相等
從上面這個例子中,可以看到“==”運算符只比較值是否相等,不關心兩個字符串在字典序上的大小關系。
綜上,strcmp()函數是php中用來比較兩個字符串是否相等的常用函數,要注意它比較的是兩個字符串在字典序方面的大小關系,而不是字符串的長度;在比較時,是按照字符的ASCII碼進行比較的。如果不希望區分字符大小寫,可以使用strcasecmp()函數;如果只是比較值是否相等,可以使用“==”運算符。
比如有兩個字符串“abc”和“ac”,使用strcmp()進行比較,結果為負整數-1,因為“abc”在字典序意義下小于“ac”。
再比如有兩個字符串“123”和“abc”,使用strcmp()進行比較,結果為正整數,因為“123”在字典序意義下大于“abc”。
但有一點需要注意的是,strcmp()在比較時是按照字母的ASCII值進行比較的,而不是按字符串長度比較;如果兩個字符串長度相等,但對應的字符不同,則從第一對不相同的字符開始比較。
$str1 = "abc";
$str2 = "ac";
$result = strcmp($str1, $str2);
echo $result; // 輸出 -1
$str1 = "123";
$str2 = "abc";
$result = strcmp($str1, $str2);
echo $result; // 輸出 1
$str1 = "apple";
$str2 = "app";
$result = strcmp($str1, $str2);
echo $result; // 輸出 1
從上面的例子中,我們可以得到strcmp()函數的三種結果,并且可以看出其比較規則,不論字符串中有什么符號或數字都只比較字母的ASCII碼。
有時候我們會用到strcasecmp()這個函數,該函數是對strcmp()函數的不區分大小寫的版本,與strcmp()函數不同的是,strcasecmp()函數比較時不區分字符大小寫。
$str1 = "APPLE";
$str2 = "apple";
$result = strcasecmp($str1, $str2);
echo $result; // 輸出 0
$str1 = "World";
$str2 = "wor";
$result = strcasecmp($str1, $str2);
echo $result; // 輸出 1
另外,當我們比較兩個變量是否相等時,也可以使用“==”這個運算符,它也能夠比較兩個字符串;但要注意的是,“==”只比較值是否相等,而不管兩個字符串在字典序方面的大小,這點與strcmp()函數是不同的。
$str1 = "abc";
$str2 = "abc";
if ($str1 == $str2) {
echo "相等";
} else {
echo "不相等";
} // 輸出 相等
$str1 = "abc";
$str2 = "ac";
if ($str1 == $str2) {
echo "相等";
} else {
echo "不相等";
} // 輸出 不相等
從上面這個例子中,可以看到“==”運算符只比較值是否相等,不關心兩個字符串在字典序上的大小關系。
綜上,strcmp()函數是php中用來比較兩個字符串是否相等的常用函數,要注意它比較的是兩個字符串在字典序方面的大小關系,而不是字符串的長度;在比較時,是按照字符的ASCII碼進行比較的。如果不希望區分字符大小寫,可以使用strcasecmp()函數;如果只是比較值是否相等,可以使用“==”運算符。