解析 JSON 文件并比较 semvers

Parsing a JSON file and comparing semvers

我有一个 json 文件,大致如下所示。

{
   "foo" : {
      "name" : "bar", 
      "dev-master" : {}, 
      "3.0-dev" : {}, 
      "2.4" : {}, 
      "master" : {},
   }
}

我想知道是否有解决方案来解析并获取最反感的semver标签。我试过:

<?php 
$file = 'data.json'; 
$content = file_get_contents($file); 
$content = json_decode($content); 

$container = [];
foreach($content as $version){
  $container[$version] = $version; 
}

.. 

现在,假设 $container 包含所有标签,我如何获得最新版本将是 2.4。

获取 2.4 不是问题,而是制定一个面向未来的可靠方法来找出哪个是最近的。

这是一种方法。它假设最新版本号仅由数字和小数点组成。您可以更新正则表达式以允许破折号等。

#!/usr/bin/php
<?php
$content = json_decode(file_get_contents('data.json'));
$container = [];
foreach($content as $name => $versions){
        $props   = get_object_vars($versions);
        $container[$name] = null;
        foreach (array_keys($props) as $versionName) {
                if (preg_match('/^[0-9\.]+$/',$versionName)) {
                        // Ensure if multiple versions are present the greatest 
value will be used
                        if (isset($container[$name])) {
                            $container[$name] = max($versionName,$container[$nam
e]);
                        } else {
                            $container[$name] = $versionName;
                        }
                }
        }
}
var_dump($container);

如果没有找到最终版本,版本名称将为空。