如何在PHP中获取最高版本号/标记

时间:2016-02-24 10:22:55

标签: php

因为Bitbucket API没有提供获取存储库最新标记的方法,所以我发现自己必须从所有标记的数组中获取它。

你是怎么做到的?

我尝试过max,但它对某些数字不起作用,例如。

max(['1.0.8', '1.0.9', '1.0.10']);

返回' 1.0.9'。

我知道标签只会是三个数字a.b.c,因为我们为我们的回购标记做标记,所以他们不会有其他半字节接受的字符串,例如alpha等。

那你怎么做的?

3 个答案:

答案 0 :(得分:11)

$versions = ['1.0.8', '1.0.9', '1.0.10'];
usort($versions, 'version_compare');
echo end($versions);

请参阅http://php.net/version_compare

如果您不想修改阵列:

echo array_reduce($versions, function ($highest, $current) {
    return version_compare($highest, $current, '>') ? $highest : $current;
});

答案 1 :(得分:1)

使用version_compare功能:

<!DOCTYPE html>
<html ng-app="app">
<head>    
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
</head>
<body ng-controller="indexCtrl">
    Input: <input type="text" ng-model="amount">
    <h3>{{amount | INR}}</h3>
</body>
</html>

答案 2 :(得分:-1)

因为你在这里处理字符串而不是数字,所以你不会得到你需要的结果。您可以尝试以下方法:

$version_numbers = str_replace(".","",['1.0.8', '1.0.9', '1.0.10']);
$max = max($version_numbers);

如果您总是处理固定的 abc 结构,那么通过替换小数点,您将得到一系列整数,可以让您相对轻松地确定最大值< / p>