首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >仅对组合了数字、number_letters、letters_numbers和字母的数组进行排序

仅对组合了数字、number_letters、letters_numbers和字母的数组进行排序
EN

Stack Overflow用户
提问于 2019-09-11 10:25:37
回答 1查看 47关注 0票数 2

我正在尝试排序和数组,但是无法按预期获得数组。

我有一个像这样的数组:

代码语言:javascript
复制
Array
(
    [0] => 5
    [1] => 7
    [2] => 8
    [3] => 9
    [4] => 10
    [5] => 11
    [6] => 12
    [7] => 13
    [8] => 14
    [9] => 15
    [10] => 16
    [11] => 17
    [12] => 18
    [13] => 19
    [14] => 20
    [15] => 21
    [16] => 23
    [17] => 24
    [18] => 26
    [19] => 28
    [20] => 29
    [21] => 30
    [22] => 31
    [23] => 32
    [24] => 33
    [25] => 34
    [26] => 35
    [27] => 36
    [28] => 37
    [29] => 38
    [30] => 39
    [31] => 40
    [32] => 41
    [33] => 42
    [34] => 44
    [35] => 46
    [36] => 48
    [37] => 50
    [38] => 52
    [39] => 54
    [40] => A
    [41] => B
    [42] => 3
    [43] => 4
    [44] => 6
    [45] => A1
    [46] => B1
    [47] => 1A
    [48] => 22
    [49] => 25
    [50] => 27
    [51] => 1B
)

当我运行asort($arr)时,它返回:

代码语言:javascript
复制
Array
(
    [47] => 1A
    [51] => 1B
    [42] => 3
    [43] => 4
    [0] => 5
    [44] => 6
    [1] => 7
    [2] => 8
    [3] => 9
    [4] => 10
    [5] => 11
    [6] => 12
    [7] => 13
    [8] => 14
    [9] => 15
    [10] => 16
    [11] => 17
    [12] => 18
    [13] => 19
    [14] => 20
    [15] => 21
    [48] => 22
    [16] => 23
    [17] => 24
    [49] => 25
    [18] => 26
    [50] => 27
    [19] => 28
    [20] => 29
    [21] => 30
    [22] => 31
    [23] => 32
    [24] => 33
    [25] => 34
    [26] => 35
    [27] => 36
    [28] => 37
    [29] => 38
    [30] => 39
    [31] => 40
    [32] => 41
    [33] => 42
    [34] => 44
    [35] => 46
    [36] => 48
    [37] => 50
    [38] => 52
    [39] => 54
    [40] => A
    [45] => A1
    [41] => B
    [46] => B1
)

它是正常排序,但是,我愿意有它排序的组合,如数字,NumbersLetters,LettersNumbers,字母。

例如,此数组应如下所示:

代码语言:javascript
复制
Array
(
    [42] => 3
    [43] => 4
    [0] => 5
    [44] => 6
    [1] => 7
    [2] => 8
    [3] => 9
    [4] => 10
    [5] => 11
    [6] => 12
    [7] => 13
    [8] => 14
    [9] => 15
    [10] => 16
    [11] => 17
    [12] => 18
    [13] => 19
    [14] => 20
    [15] => 21
    [48] => 22
    [16] => 23
    [17] => 24
    [49] => 25
    [18] => 26
    [50] => 27
    [19] => 28
    [20] => 29
    [21] => 30
    [22] => 31
    [23] => 32
    [24] => 33
    [25] => 34
    [26] => 35
    [27] => 36
    [28] => 37
    [29] => 38
    [30] => 39
    [31] => 40
    [32] => 41
    [33] => 42
    [34] => 44
    [35] => 46
    [36] => 48
    [37] => 50
    [38] => 52
    [39] => 54
    [47] => 1A
    [51] => 1B
    [45] => A1
    [46] => B1
    [40] => A
    [41] => B
)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-11 12:30:11

您可以在uasort中使用用户定义的排序,请检查Demo

代码语言:javascript
复制
uasort($array,function($a,$b){
    if(is_numeric($a) && is_numeric($b)){
        return $a - $b;
    }elseif(is_numeric($a)){
        return -1;
    }elseif(is_numeric($b)){
        return 1;
    }else{
        $length = max(strlen($a),strlen($b));
        return strcmp(str_pad($a,$length,"z",STR_PAD_LEFT),str_pad($b,$length,"z",STR_PAD_LEFT));
    }
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57881219

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档