<?php
/** 版本號比較 by sam 20170412
* @param $version1 版本a 如:5.3.2
* @param $version2 版本b 如:5.3.0
* @return int -1版本a小於版本b , 0版本a等於版本b, 1版本a大於版本b
** 版本號格式注意:
* 1.要求只包含:點和大於等於0小於等於2147483646的整數 的組合
* 2.boole型 true置1,false置0
* 3.不設位預設補0計算,如:版本號5等於版號5.0.0
* 4.不包括數字 或 負數 的版本號 ,統一按0處理
** @example:
* if (versioncompare('5.2.2','5.3.0')<0)
*/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)
$verlistb[$i] = intval(@$verlistb[$i]);
if ($verlistb[$i] <0 )
if ($verlista[$i]>$verlistb[$i]) else
if ($verlista[$i]<$verlistb[$i]) else
if ($i==($len-1))
}}//驗證,應該放在另乙個檔案中
function
myasserthandler
($file, $line)
assert_options(assert_callback, 'myasserthandler');
//常規驗證
assert(versioncompare('5.3.2','5.3.1')===1);
assert(versioncompare('5','5.3.1')===-1);
assert(versioncompare('5.0.0','5')===0);
assert(versioncompare('5.0.1','5.2.1')===-1);
assert(versioncompare('5.0.0','5.0.1')===-1);
//0驗證
assert(versioncompare('0.0.1','0.1.0')===-1);
assert(versioncompare('0','0') === 0);
assert(versioncompare('1.0','0') === 1);
assert(versioncompare('1.1','0') === 1);
//負數驗證
assert(versioncompare('1.-1','0') === 1);
assert(versioncompare('-1','0') === 0);
//boolean驗證
assert(versioncompare(true,false) === 1);
assert(versioncompare(false,true) === -1);
assert(versioncompare(true,'1.0.0') === 0);
assert(versioncompare(false,'0') === 0);
//字母驗證
assert(versioncompare('a.a','0') === 0);
assert(versioncompare('0','a.a.0') === 0);
//超大數驗證
assert(versioncompare('2147483645','2147483646') === -1);
trycatch(\exception
$e)echo
"驗證通過\n";
比較版本號
題目 比較兩個版本號 version1 和 version2。如果 version1 version2 返回 1,如果 version1 version2 返回 1,除此之外返回 0。你可以假設版本字串非空,並且只包含數字和 字元。字元不代表小數點,而是用於分隔數字序列。例如,2.5 不是 兩個半 ...
比較版本號
比較兩個版本號 version1 和 version2。如果 version1 version2 返回 1,如果 version1 version2 返回 1,除此之外返回 0。你可以假設版本字串非空,並且只包含數字和 字元。字元不代表小數點,而是用於分隔數字序列。例如,2.5 不是 兩個半 也不是...
比較版本號
比較版本號 比較兩個版本號 version1 和 version2。如果 version1 version2 返回1,如果 version1 version2 返回 1,除此之外返回0。你可以假設版本字串非空,並且只包含數字和.字元。字元不代表小數點,而是用於分隔數字序列。例如,2.5不是 兩個半 ...