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

mat*_*ttl 8 php

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

你怎么做呢?

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

max(['1.0.8', '1.0.9', '1.0.10']);
Run Code Online (Sandbox Code Playgroud)

返回'1.0.9'.

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

你是怎么做到的?

dec*_*eze 11

$versions = ['1.0.8', '1.0.9', '1.0.10'];
usort($versions, 'version_compare');
echo end($versions);
Run Code Online (Sandbox Code Playgroud)

http://php.net/version_compare

如果您不想修改数组:

echo array_reduce($versions, function ($highest, $current) {
    return version_compare($highest, $current, '>') ? $highest : $current;
});
Run Code Online (Sandbox Code Playgroud)

  • 哦哇[version_compare](http://php.net/version_compare)的这部分非常好`如果某个部分包含特殊版本字符串,则按以下顺序处理:在此列表中找不到任何字符串<dev <alpha = a <beta = b <RC = rc <#<pl = p`. (2认同)