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 // 同上