У меня есть файл 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);
Если окончательная версия не найдена, имя версии будет нулевым.
Других решений пока нет …