版本号的比较

plan1:

// 1 前者更大,0 后者更大, -1 相同
// 支持多位比较
function versionCompare($versionA, $versionB)
{
     
    $dm = '.';
    $verListA = explode($dm, (string)$versionA);
    $verListB = explode($dm, (string)$versionB);
    $len = max(count($verListA), count($verListB));
    $i = -1;
    while ($i++ < $len) {
     
        $verListA[$i] = intval(@$verListA[$i]);
        if ($verListA[$i] < 0) {
     
            $verListA[$i] = 0;
        }
        $verListB[$i] = intval(@$verListB[$i]);
        if ($verListB[$i] < 0) {
     
            $verListB[$i] = 0;
        }

        if ($verListA[$i] > $verListB[$i]) {
     
            return 1;
        } else if ($verListA[$i] < $verListB[$i]) {
     
            return 0;
        } else if ($i == ($len - 1)) {
     
            return -1;
        }
    }
}

plan2:

//比较版本号, 1, 前者更大, -1 后者更大, 0 相同 --crh
// 支持多位比较
function compareVersion($prev, $next)
{
     
    $prevArr = explode('.', $prev);
    $nextArr = explode('.', $next);
    $longArr = count($prevArr) >= count($nextArr) ? $prevArr : $nextArr;
    foreach ($longArr as $key => $value) {
     
        $prevArr[$key] = !empty($prevArr[$key]) ? $prevArr[$key] : 0;
        $nextArr[$key] = !empty($nextArr[$key]) ? $nextArr[$key] : 0;
        if ($prevArr[$key] > $nextArr[$key]) {
     
            return 1;
        } else if ($prevArr[$key] < $nextArr[$key]) {
     
            return -1;
        }
    }
    return 0;
}

plan3:
使用PHP官方函数version_compare() 比较
缺点:只能比较版本号位数相同的版本,否则相同版本位数越大,版本越大

你可能感兴趣的:(php,版本号,比较)