zoukankan      html  css  js  c++  java
  • php 将字符串数组按照ascii码排序

    博主帮我解决了大问题,感谢!记录这个坑

    (遇坑这个接口文档没有PHP签名的示例,而且也不是根据键值和value值进行升序、降序,是比较的每个字符串的每个字符的ACSII值,一直比较出大小为止)

    // 比较两串字符的ascii码大小
    function check_ascii(string $str1, string $str2){
        $len1 = strlen($str1);
        $len2 = strlen($str2);
    
        if ($len1 > $len2) {
            $bool = false;
            $len = $len2;
        } else {
            $bool = true;
            $len = $len1;
        }
    
        for ($i=0; $i<$len; ++$i) {
            if (ord($str1[$i]) > ord($str2[$i])) { // 第一个 比 第二个 大
                return false;
            } elseif (ord($str1[$i]) < ord($str2[$i])) { // 第二个 比 第一个 大
                return true;
            }
        }
    
        return $bool; // 前面字符相等,长度短的小
    }
    
    // 比较两串字符的ascii码大小
    function check_ascii(string $str1, string $str2){
        $len1 = strlen($str1);
        $len2 = strlen($str2);
    
        if ($len1 > $len2) {
            $bool = false;
            $len = $len2;
        } else {
            $bool = true;
            $len = $len1;
        }
    
        for ($i=0; $i<$len; ++$i) {
            if (ord($str1[$i]) > ord($str2[$i])) { // 第一个 比 第二个 大
                return false;
            } elseif (ord($str1[$i]) < ord($str2[$i])) { // 第二个 比 第一个 大
                return true;
            }
        }
    
        return $bool; // 前面字符相等,长度短的小
    }
    
    // 根据 ascii码 排序 顺序 (仿windows文件排序)
    function asc_sort(array &$arr, callable $callable){
        foreach ($arr as $k1=>&$v1) {
            foreach ($arr as $k2=>&$v2) {
                if ($v1 != $v2 && $callable($v1, $v2)) {
                    $tmp = $v1;
                    $v1 = $v2;
                    $v2 = $tmp;
                }
            }
        }
    }
    
    // 根据 ascii码 排序 倒序 (仿windows文件排序)
    function ascr_sort(array &$arr, callable $callable){
        foreach ($arr as &$v1) {
            foreach ($arr as &$v2) {
                if ($v1 != $v2 && !$callable($v1, $v2)) {
                    $tmp = $v1;
                    $v1 = $v2;
                    $v2 = $tmp;
                }
            }
        }
    }
    
    $arr = [
        'abc',
        'aba',
        'ab',
        'ab2',
        '11',
        '10',
        '012',
    ];
    
    asc_sort($arr, 'check_ascii');
    dump(check_ascii('abc', 'abb'));
    dump($arr);
    View Code


    ————————————————
    版权声明:本文为CSDN博主「drzdryse」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/m0_37711659/article/details/93893174

  • 相关阅读:
    poj 1007:DNA Sorting(水题,字符串逆序数排序)
    蓝桥杯北京之旅【第二篇·2014.5.31】
    poj 1006:Biorhythms(水题,经典题,中国剩余定理)
    蓝桥杯北京之旅【第一篇·2014.5.30】
    【2014年6月份日常记录表(2014.6.1—6.30,30天)】
    poj 1002:487-3279(水题,提高题 / hash)
    ThreadPoolExecutor机制探索-我们到底能走多远系列(41)
    ibatis批量操作补充
    Maven管理 划分模块
    顺序队列实现任务以此执行-任务调度系列2
  • 原文地址:https://www.cnblogs.com/PHP0222wangdong/p/14922036.html
Copyright © 2011-2022 走看看