PHP:version_compare()在比较5.2和5.2.0时返回-1?

evi*_*iko 14 php

version_compare('5.2', '5.2.0'); // returns -1, as if the second parameter is greater!
Run Code Online (Sandbox Code Playgroud)

是不是5.2和5.2.0相等?(不是5.2和5.2.0.0也相等)?

cee*_*yoz 13

该文档称它比较了"两个"PHP标准化的"版本号字符串".

您将一个PHP标准化版本号字符串与一个非PHP标准化版本号字符串进行比较.


Pau*_*aul 9

这是一个经过调整的比较函数,它通过修剪零版本后缀组件(即5.2.0- >)来表现5.2.

var_dump(my_version_compare('5.1', '5.1.0'));           //  0 - equal
var_dump(my_version_compare('5.1', '5.1.0.0'));         //  0 - equal
var_dump(my_version_compare('5.1.0', '5.1.0.0-alpha')); //  1 - 5.1.0.0-alpha is lower
var_dump(my_version_compare('5.1.0-beta', '5.1.0.0'));  // -1 - 5.1.0-beta is lower

function my_version_compare($ver1, $ver2, $operator = null)
{
    $p = '#(\.0+)+($|-)#';
    $ver1 = preg_replace($p, '', $ver1);
    $ver2 = preg_replace($p, '', $ver2);
    return isset($operator) ? 
        version_compare($ver1, $ver2, $operator) : 
        version_compare($ver1, $ver2);
}
Run Code Online (Sandbox Code Playgroud)