<?php
// 简单排序
class ExamSortLogic
{
private static $type = 0;//0 中文变数字 1数字变中文
//题号号排序
//$versions = ['五.1.1.1','五.2.1.1','五.3','四.1.1','四.2.1'];
public static function sortVersion($versions, $sort_rule = true)
{
$arr = array_map([new ExamSortLogic,'chineseExchangeNumber'],$versions);
//自定义排序
usort($arr, function ($a, $b) {
$aParts = explode('.', $a);
$bParts = explode('.', $b);
// dump($aParts);die;
foreach ($aParts as $key => $aPart) {
if (!isset($bParts[$key])) {
return 1; // $b 比 $a 短,$a 大于 $b
}
if ($aPart !== $bParts[$key]) {
return $aPart <=> $bParts[$key]; // 比较对应位置的数值大小
}
}
return count($aParts) <=> count($bParts); // 长度相同,按原顺序排序
});
self::$type = 1;
$versions = array_map([new ExamSortLogic,'chineseExchangeNumber'],$arr);
return $versions;
}
//中文数字 互换
public static function chineseExchangeNumber($str)
{
$num_arr = [
'一' => 1,'二' => 2,'三' => 3,'四' => 4,'五' => 5,'六' => 6,'七' => 7,'八' => 8,'九' => 9,'十' => 10,'十一' => 11,'十二' => 12,'十三' => 13,'十四' => 14,'十五' => 15,'十六' => 16,'十七' => 17,'十八' => 18,'十九' => 19,'二十' => 20
];
if(self::$type){
$num_arr = array_flip($num_arr);
}
$a_arr = explode('.',$str);
foreach($a_arr as $key=>$value){
if($key == 0 && isset($num_arr[$value])){
$a_arr[$key] = $num_arr[$value];
}
}
$str = implode('.',$a_arr);
return $str;
}
}
若是版本号无中文,则去掉中文转换即可