比较PHP中的两个版本字符串

w3nuxt5m  于 2023-01-08  发布在  PHP
关注(0)|答案(3)|浏览(120)

如何比较版本格式中的两个字符串?例如:

version_compare("2.5.1",  "2.5.2") => -1 (smaller)
version_compare("2.5.2",  "2.5.2") =>  0 (equal)
version_compare("2.5.5",  "2.5.2") =>  1 (bigger)
version_compare("2.5.11", "2.5.2") =>  1 (bigger, eleven is bigger than two)
u91tlkcl

u91tlkcl1#

从PHP交互提示符使用version_compare函数(自 4.1 起内置于PHP):

php > print_r(version_compare("2.5.1",  "2.5.2")); // expect -1
-1
php > print_r(version_compare("2.5.2",  "2.5.2")); // expect 0
0
php > print_r(version_compare("2.5.5",  "2.5.2")); // expect 1
1
php > print_r(version_compare("2.5.11", "2.5.2")); // expect 1
1

看起来PHP已经像你期望的那样工作了。如果你遇到了不同的行为,也许你应该指定它。

l7wslrjt

l7wslrjt2#

此外,您还可以通过向version_compare()传递一个额外的参数来使用PHP内置函数,如下所示

if(version_compare('2.5.2', '2.5.1', '>')) {
 print "First arg is greater than second arg";
}

更多查询请参见version_compare

nx7onnlm

nx7onnlm3#

如果您的版本比较不起作用,下面的代码将生成您的结果。

function new_version_compare($s1,$s2){
    $sa1 = explode(".",$s1);
    $sa2 = explode(".",$s2);
    if(($sa2[2]-$sa1[2])<0)
        return 1;
    if(($sa2[2]-$sa1[2])==0)
        return 0;
    if(($sa2[2]-$sa1[2])>0)
        return -1;
}

相关问题