Разбор файла JSON и сравнение семверов

У меня есть файл 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 это не проблема, но создание надежного способа, который поможет найти будущее.

0

Решение

Это один из подходов. Он использует предположение, что самый последний номер версии будет состоять только из цифр и десятичных знаков. Вы можете обновить регулярное выражение, чтобы разрешить тире и т. Д.

#!/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);

Если окончательная версия не найдена, имя версии будет нулевым.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]