note 30828 deleted from function.version-compare by didou
| From: | didou@php.net | Date: | Thu, 29 May 2003 21:49:57 +0000 |
| Subject: | note 30828 deleted from function.version-compare by didou | ||
| References: | 1 | Groups: | php.notes |
| Request: | Send a blank email to php-notes+get-49341@lists.php.net to get a copy of this message | ||
Note Submitter: admin@digimon-wranglers.com
----
If you want a version of version_compare that works on earler versions (most likely not PHP3, I
don't bother testing such old versions anymore) then try this, unlike the above examples it
takes the same params as the official version and should return the same results.
if (!function_exists('version_compare'))
{
function version_compare($ver1, $ver2, $op='noop')
{
$v1 = explode('.', $ver1);
$v2 = explode('.', $ver2);
$ret = 0;
for ($i = 0; $i <= 2; $i++)
{
if ($v1[$i] < $v2[$i])
{
$ret = -1;
break;
}
if ($v1[$i] > $v2[$i])
{
$ret = 1;
break;
}
}
switch ($op)
{
default:
case 'noop':
{
break;
}
case '<':
case 'lt':
{
if ($ret == -1)
{
$ret = 1;
}
else
{
$ret = 0;
}
break;
}
case '<=':
case 'le':
{
if ($ret == -1 || $ret == 0)
{
$ret = 1;
}
else
{
$ret = 0;
}
break;
}
case '>':
case 'gt':
{
if ($ret == 1)
{
$ret = 1;
}
else
{
$ret = 0;
}
break;
}
case '>=':
case 'ge':
{
if ($ret == 0 || $ret == 1)
{
$ret = 1;
}
else
{
$ret = 0;
}
break;
}
case '==':
case '=':
case 'eq':
{
if ($ret == 0)
{
$ret = 1;
}
else
{
$ret = 0;
}
break;
}
case '!=':
case '<>':
case 'ne':
{
if ($ret == -1 || $ret == 1)
{
$ret = 1;
}
else
{
$ret = 0;
}
break;
}
}
return $ret;
}
}