我有一個代表軟件版本的數字(例如: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