PHP - 通过十进制分隔来划分数字序列

时间:2011-01-29 09:04:49

标签: php

我有一个代表软件版本的编号(例如:1.2.0.14),我需要将每个除以小数的数字分开,并将每个数字存储为一个单独的变量。

示例:

原始号码是1.2.0.14

$current_version_major = 1;
$current_version_minor = 2;
$current_version_revision = 0;
$current_version_build = 14;

最有效的方法是什么?

5 个答案:

答案 0 :(得分:6)

  

我需要将每个数字分开   除以小数并存储每个   数字作为一个单独的变量。

您可以做的最好的事情是使用explodelist,如下所示:

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

更多信息:

答案 1 :(得分:2)

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

答案 2 :(得分:1)

一种方式:

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

现在$version[0]包含主要版本的“1”。 $version[1]包含次要版本的“2”,$version[2]包含“0”用于修订,$version[3]包含“14”用于版本。

答案 3 :(得分:1)

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

答案 4 :(得分: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", ">")来获取布尔结果会更容易。