2011-01-29 2 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

+0

Я пробовал пример Сарфраза, и он работал хорошо, но я не знал о версии_compare(), работает намного легче, чем то, с чем я столкнулся. Отправьте это как ответ, и я приму это. – user

ответ

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 
} 

Помимо поддержки некоторых текстовых уловок (rc и beta суффиксы) version_compare оценивает каждую часть как целое, так что .14 интерпретируется более поздним, чем .2. Он также работает с патч-суффиксами 1.0-2

Это еще проще в использовании version_compare("2.0", "1.0", ">"), чтобы получить логический результат.

+0

Это хороший пример того, почему айки должны упомянуть о своей цели, а не просто спрашивать о деталях реализации на этом пути. – Olhovsky

6

мне нужно отделить каждое число, которое разделенных десятичной и хранить каждый номер в качестве отдельного переменного.

Лучшее, что вы можете сделать, это использовать explode и list вроде этого:

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

Дополнительная информация:

+0

+1: Удивительное форматирование кода. – shamittomar

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, которая возвращает вам элементы в виде массива, где разделителем будет «.». (ваш «десятичный»).

Смежные вопросы