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