• 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

  • 相关阅读:
    右键点击任务栏程序没有锁定菜单
    CMD命令:不是内部或者外部命令也不是可运行的程序或批处理文件
    通道闸机
    Activex、OLE、COM、OCX、DLL之间区别、联系[转]
    C#图像显示实现拖拽、锚点缩放功能【转】
    顶级人生规划[转]
    jqGrid选择列控件向右拖拽超出边界处理
    强力推荐!那些你不能错过的 GitHub 插件和工具
    GitHub 托管的10款免费开源 windows 工具
    实现阶层跨越的捷径
  • 原文地址:https://www.cnblogs.com/PHP0222wangdong/p/14922036.html
Copyright © 2020-2023  润新知