题号排序、版本号排序

<?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;
    }
}

若是版本号无中文,则去掉中文转换即可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值