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