我错了还是version_compare不支持比较具有不同"点"长度的字符串/数字?
有没有一种快速的方法可以在不重新发明轮子的情况下比较以下内容?
version_compare(1.0, 1.0.0.0) => equal
version_compare(1.0, 1.0.0.1) => right is higher
version_compare(1.1, 1.0.0.1) => left is higher
我会这样做;
function versionCompare($a, $b) {
$a = str_replace('.', '', $a);
$b = str_replace('.', '', $b);
$len = max(array(strlen($a), strlen($b)));
$a = (int) str_pad($a, $len, '0', STR_PAD_RIGHT);
$b = (int) str_pad($b, $len, '0', STR_PAD_RIGHT);
if ($a === $b) {
// Versions are equal
} elseif ($a > $b) {
// First version is higher
} else {
// Last version is higher
}
}