require ('function.php');
// 比较两串字符的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);