- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
// то что было
/************************************
return TRUE if version1 >= version2
version1 = "XX.XX.XX"
version2 = "XX.XX.XX"
************************************/
function CheckVersion($version1, $version2)
{
$arr1 = explode(".",$version1);
$arr2 = explode(".",$version2);
if (intval($arr2[0])>intval($arr1[0])) return false;
elseif (intval($arr2[0])<intval($arr1[0])) return true;
else
{
if (intval($arr2[1])>intval($arr1[1])) return false;
elseif (intval($arr2[1])<intval($arr1[1])) return true;
else
{
if (intval($arr2[2])>intval($arr1[2])) return false;
elseif (intval($arr2[2])<intval($arr1[2])) return true;
else return true;
}
}
}
// а я бы сделал вот так
// причем при добавлении новой подверсии работоспособность не изменится
function CheckVersion($version1, $version2)
{
return (intval(str_replace('.','',$version1))>=intval(str_replace('.','',$version2))) ? true : false;
}
guest 23.01.2009 08:16 # +0.2
Чувааак, ты не прав =) Версии в общем случае $a.$b.$c.$d - где любое число может быть больше 10, соответственно нельзя их сравнивать их как числа, просто убирая точку.
У них конечно тоже не оптимально, зато читабельно =)
guest 23.01.2009 10:53 # 0
Кстати а почему нет. Оба варианта 100% эквивалентны.
guest 23.01.2009 12:28 # 0
Reaggae
Сравнивая версии 1.12.1 > 1.1.35 (по второму варианту 1121 < 1135 )
1.1 > 0.15 (11 < 15)
1.1 > 0.11.2 (11 < 112)
По-моему, второй вариант больший говнокод
guest 23.01.2009 14:11 # +1
лол
guest 23.01.2009 14:17 # 0
сорри точнее вот так правильней
<?php
function CheckVersion($version1, $version2){
$arr1 = explode(".",$version1);
$arr2 = explode(".",$version2);
for($i=0;$i<sizeof($arr1);$i++)
if($arr1[$i]>$arr2[$i]) return true;
elseif ($arr1[$i]<$arr2[$i]) return false;
else continue;
}
?>
guest 23.01.2009 15:48 # 0
Изобретение велосипеда.
version_compare() compares two "PHP-standardized" version number strings.
http://ru.php.net/manual/ru/function.version-compare.php