まず、メジャーバージョンでバージョンをグループ化する必要があります。その後あなただけの降順にversion_compare
機能を使用したグループをソートするために、各グループの最初の要素を返す必要があります。
$versions = array("3.0.3", "3.0.2", "3.0.1", "3.0.0", "2.9.5", "2.9.4",
"2.9.3", "2.9.2", "2.9.1", "2.9.0", "2.8.11", "2.8.10", "2.8.9"
);
$groupedVersions = array();
foreach ($versions as $version) {
preg_match('/^\d+\.\d+/', $version, $majorVersion);
if (!isset($groupedVersions[$majorVersion[0]])) {
$groupedVersions[$majorVersion[0]] = array($version);
} else {
$groupedVersions[$majorVersion[0]][] = $version;
}
}
$groupedVersions = array_map(function ($versions) {
usort($versions, 'version_compare');
return array_reverse($versions);
}, $groupedVersions);
$latestVersions = array_reduce($groupedVersions, function ($carry, $versions) {
$carry[] = $versions[0];
return $carry;
}, array());
echo '<pre>';
var_dump($latestVersions);
echo '</pre>';
結果は次のようになります。
あなたが使用することができます
array(3) {
[0]=>
string(5) "3.0.3"
[1]=>
string(5) "2.9.5"
[2]=>
string(6) "2.8.11"
}
私は本当に脳ティーザーが好きですが。あなたは何かを試してみることを期待します。何か試しましたか? – izk
この機能は役立ちます:http://php.net/manual/en/function.explode.php – Reversal
はい私はそれを把握しようとしています。私は最初の2つの値を最初に取得しようとしていましたが、それを比較しましたが、できません。 foreach($ array = $ $)$ {0}; $ test = substr($ value、0、3); $ a = strtr($ value、array( '。' => ''、 '、' => '')); $ b =(int)$ a; $ c = substr($ b、0、2); $ new_array = array($ c); $結果=配列_ユニーク($ new_array); print_object($ result); } – user2450639