2011-01-29 36 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函數,它返回的元素爲一個數組,其中分隔符將是「。」。 (你的'小數')。