2011-01-29 41 views
3

我有一个代表软件版本的数字(例如: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; 

什么将去这样做的最有效方法是什么?

+0

如果这是您的实际使用案例,您可能还会考虑[`version_compare`](http://php.net/manual/en/function.version-compare.php)或其中提到的替代方案之一。 – mario 2011-01-29 09:29:54

+0

我尝试了Sarfraz的例子,它运行良好,但我没有意识到version_compare(),它的工作比我想出的要容易得多。提交这个答案,我会接受它。 – user 2011-01-29 11:07:39

回答

1

如果你实际上并不需要单独存储版本领域,只是想比较两个版本,然后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 
} 

除了支持一些文字噱头(rcbeta后缀)version_compare将每个部分评估为整数,因此.14被解释为比.2更新。它也适用于补丁后缀1.0-2

使用version_compare("2.0", "1.0", ">")可以更容易地获得布尔结果。

6

我需要分隔每个数字,是 由十进制分割,并且每个 号码存储为单独的变量。

你能做的最好是用explodelist这样的:

list(
     $current_version_major, 
     $current_version_minor, 
     $current_version_revision, 
     $current_version_build) = explode('.', $version_number); 

更多信息:

+0

+1:真棒代码格式。 – shamittomar 2011-01-29 09:30:51

2
list($current_version_major,$current_version_minor,$current_version_revision,$current_version_build) = explode('.',$version); 
1

方式一:

$version = explode(".", "1.2.0.14"); 

现在$version[0]包含 “1” 为主要。 $version[1]包含次要的“2”,$version[2]包含“0”用于修订,并且$version[3]包含用于构建的“14”。

1

PHP有一个explode函数,它返回的元素为一个数组,其中分隔符将是“。”。 (你的'小数')。