1) 如果兩個字串的開頭部分相同,則會從兩個字串中截斷該部分。
2) 將剩餘的字串進行比較,有兩種可能的結果
a) 如果其中一個剩餘的字串是空字串,則返回非空字串的長度(正負號取決於您將參數傳遞給函式的順序)
b) 在其他任何情況下,只比較第一個字元的數值。結果為 +1 或 -1,無論兩個數值之間的差異有多大。
<?php
$str = array('','a','afox','foxa');
$size = count($str);
echo '<pre>';
for($i=0; $i<$size; $i++)
{
for($j=$i+1; $j<$size; $j++)
{
echo '<br>('.$str[$i].','.$str[$j].') = '.strcmp($str[$i], $str[$j]);
echo '<br>('.$str[$j].','.$str[$i] .') = '.strcmp($str[$j], $str[$i]);
}
}
echo '</pre>';
?>
在 Apache/2.4.37 (Win32) OpenSSL/1.1.1 PHP/7.2.12 產生以下結果
(,a) = -1 //與空字串比較會產生非空字串的長度
(a,) = 1 // 同上
(,afox) = -4 // 同上
(afox,) = 4 // 同上
(,foxa) = -4 // 同上
(foxa,) = 4 // 同上
(a,afox) = -3 // 相同的開頭部分 ("a") 會從兩個字串中截斷。然後剩餘的 "fox" 會與另一個參數中剩餘的空字串進行比較。產生非空字串的長度。與上述所有範例相同。
(afox,a) = 3 // 同上
(a,foxa) = -1 // 沒有要截斷的部分。僅比較第一個字母的數值
(foxa,a) = 1 // 同上
(afox,foxa) = -1 // 同上
(foxa,afox) = 1 // 同上