20

バージョン形式で2つの文字列を比較するには? そのような:

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)
4

3 に答える 3

47

4.1version_compare以降 PHP に組み込まれている関数を使用した 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 はすでに期待どおりに動作しているようです。異なる動作に遭遇した場合は、おそらくこれを指定する必要があります。

于 2012-12-28T10:01:05.173 に答える
3

また、追加の引数をversion_compare()

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

さらなるクエリについては、 version_compareを参照してください。

于 2013-11-12T10:57:49.827 に答える
-1

バージョン比較が機能しない場合は、以下のコードで結果が生成されます。

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;
}
于 2012-12-28T10:03:08.483 に答える