Сравнение двойного десятичного числа - PullRequest
3 голосов
/ 11 марта 2011

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

1.0
1.1
1.0.01
1.0.1
2.0
2.5
3.0

и т. Д.и т. д.

Каков будет правильный способ сравнения этих чисел?

Я пробовал это, но получаю ошибку:

Ошибка разбора: синтаксическая ошибка, неожиданный T_DNUMBER в/home/videocoo/public_html/dev/vc-admin/test_cmp.php в строке 2

$a = 1.2.11;
$b = 1.2.0;

if($a > $b){
    print"<br />a is greater";
} else {
    print"<br />b is greater";
}

Неверно ли превращать числа в строку, заключая их в двойные кавычки?Казалось, что это дает правильное сравнение каждый раз, когда я проверял разные цифры.Спасибо!

Ответы [ 2 ]

5 голосов
/ 11 марта 2011

Функция, которую вы ищете: version_compare() Справочник по PHP

<?php
$versionA = '1.0.1';
$versionB = '1.0.2';

if (version_compare($versionA, $versionB) >= 0) {
    echo 'Version B is equal to or greater than Version A';
}

if (version_compare($versionA, $versionB, '<')) {
    echo 'Version A is less than Version B';
}
?>
2 голосов
/ 11 марта 2011

Сравнение номеров версий как строк не будет работать: отметьте 1.9 против 1.11. Вы можете использовать version_compare вместо: http://php.net/manual/en/function.version-compare.php.

...