Php/docs/function.version-compare
version_compare
(PHP 4 >= 4.1.0, PHP 5, PHP 7)
version_compare — 对比两个「PHP 规范化」的版本数字字符串
说明
version_compare
( string $version1
, string $version2
[, string $operator
] ) : mixed
version_compare() 用于对比两个「PHP 规范化」的版本数字字符串。
此函数首先在版本字符串里用一个点 .
替换 _
、-
和 +
,也会在任意非数字前后插入一个点 .
,这样,类似 '4.3.2RC1' 将会变成 '4.3.2.RC.1'。
接下来它会分割结果,
然后它会从左往右对比各个部分。
如果某部分包含了特定的版本字符串,将会用以下顺序处理:
列表中未找到的任意字符串
<
dev
< alpha
=
a
< beta
=
b
< RC
=
rc
< #
<
pl
= p
。
这种方式不仅能够对比类似 '4.1' 和 '4.1.2' 那种不同的版本级别,同时也可以指定对比任何包含 PHP 开发状态的版本。
参数
version1
第一个版本数。
version2
第二个版本数。
operator
如果你指定了可选的第三个参数
operator
,你可以测试两者的特定关系。 可以的操作符分别是:<
、lt
、<=
、le
、>
、gt
、>=
、ge
、==
、=
、eq
、!=
、<>
和ne
。此参数区分大小写,它的值应该是小写的。
返回值
默认情况下,在第一个版本低于第二个时,version_compare() 返回 -1
;如果两者相等,返回 0
;第二个版本更低时则返回 1
。
当使用了可选参数 operator
时,如果关系是操作符所指定的那个,函数将返回 true
,否则返回 false
。
范例
下例使用了 PHP_VERSION
常量,因为它执行的代码包含了 PHP 版本的值。
Example #1 version_compare() examples
<?phpif (version_compare(PHP_VERSION, '7.0.0') >= 0) { echo 'I am at least PHP version 7.0.0, my version: ' . PHP_VERSION . "\n";}if (version_compare(PHP_VERSION, '5.3.0') >= 0) { echo 'I am at least PHP version 5.3.0, my version: ' . PHP_VERSION . "\n";}if (version_compare(PHP_VERSION, '5.0.0', '>=')) { echo 'I am at least PHP version 5.0.0, my version: ' . PHP_VERSION . "\n";}if (version_compare(PHP_VERSION, '5.0.0', '<')) { echo 'I am still PHP 4, my version: ' . PHP_VERSION . "\n";}?>
注释
Note:
PHP_VERSION
常量包含了当前 PHP 的版本。
Note:
注意,类似 5.3.0-dev 的预发行版本,被认为是低于它们的最终发行版本(就像 5.3.0)。
Note:
指定类似
alpha
、beta
的版本字符串是大小写敏感的。 版本字符串的来源若不遵循 PHP 标准,可能需要在调用 version_compare() 之前先用 strtolower() 转成小写。
参见
- phpversion() - 获取当前的PHP版本
- php_uname() - 返回运行 PHP 的系统的有关信息
- function_exists() - 如果给定的函数已经被定义就返回 true