我有一个代表软件版本的数字(例如:1.2.0.14),我需要将每个数除以十进制数并将每个数存储为一个单独的变量。PHP - 用十进制分隔划分数字序列
例子:
原数为1.2.0.14
$current_version_major = 1;
$current_version_minor = 2;
$current_version_revision = 0;
$current_version_build = 14;
什么将去这样做的最有效方法是什么?
我有一个代表软件版本的数字(例如:1.2.0.14),我需要将每个数除以十进制数并将每个数存储为一个单独的变量。PHP - 用十进制分隔划分数字序列
例子:
原数为1.2.0.14
$current_version_major = 1;
$current_version_minor = 2;
$current_version_revision = 0;
$current_version_build = 14;
什么将去这样做的最有效方法是什么?
如果你实际上并不需要单独存储版本领域,只是想比较两个版本,然后version_compare
有时是一个很好的选择:
switch (version_compare("1.2.0.14", "1.2.0.22")) {
case -1: // second version number is higher
case 0: // both identical
case +1: // second version is older
}
除了支持一些文字噱头(rc
和beta
后缀)version_compare将每个部分评估为整数,因此.14
被解释为比.2
更新。它也适用于补丁后缀1.0-2
使用version_compare("2.0", "1.0", ">")
可以更容易地获得布尔结果。
我需要分隔每个数字,是 由十进制分割,并且每个 号码存储为单独的变量。
你能做的最好是用explode
和list
这样的:
list(
$current_version_major,
$current_version_minor,
$current_version_revision,
$current_version_build) = explode('.', $version_number);
更多信息:
+1:真棒代码格式。 – shamittomar 2011-01-29 09:30:51
list($current_version_major,$current_version_minor,$current_version_revision,$current_version_build) = explode('.',$version);
方式一:
$version = explode(".", "1.2.0.14");
现在$version[0]
包含 “1” 为主要。 $version[1]
包含次要的“2”,$version[2]
包含“0”用于修订,并且$version[3]
包含用于构建的“14”。
PHP有一个explode函数,它返回的元素为一个数组,其中分隔符将是“。”。 (你的'小数')。
如果这是您的实际使用案例,您可能还会考虑[`version_compare`](http://php.net/manual/en/function.version-compare.php)或其中提到的替代方案之一。 – mario 2011-01-29 09:29:54
我尝试了Sarfraz的例子,它运行良好,但我没有意识到version_compare(),它的工作比我想出的要容易得多。提交这个答案,我会接受它。 – user 2011-01-29 11:07:39