V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
cnqncom
V2EX  ›  PHP

问个数组排序的问题,求帮忙

  •  1
     
  •   cnqncom · 2017-10-04 18:06:30 +08:00 · 2848 次点击
    这是一个创建于 2606 天前的主题,其中的信息可能已经有所发展或是发生改变。
    array(6) {
    [0]=>
    string(3) "111"
    [1]=>
    string(3) "333"
    [2]=>
    string(3) "555"
    [3]=>
    string(3) "222"
    [4]=>
    string(3) "444"
    [5]=>
    string(3) "666"
    }


    如果想这样排序,请问有什么简便的方法?
    array(6) {
    [0]=>
    string(3) "111"
    [1]=>
    string(3) "222"
    [2]=>
    string(3) "333"
    [3]=>
    string(3) "444"
    [4]=>
    string(3) "555"
    [5]=>
    string(3) "666"
    }
    12 条回复    2017-11-10 15:15:33 +08:00
    huntzhan
        1
    huntzhan  
       2017-10-04 18:16:18 +08:00
    没看懂,我觉得你可能需要锻炼一下表述能力
    jhdxr
        2
    jhdxr  
       2017-10-04 18:16:43 +08:00
    asort
    jhdxr
        3
    jhdxr  
       2017-10-04 18:18:48 +08:00
    不对,这不是直接 sort 就能搞定的吗?问题在哪?
    xzem
        4
    xzem  
       2017-10-04 18:21:48 +08:00 via Android
    楼主是认为当值是字符串数字时没法直接用 sort 吗?
    crab
        5
    crab  
       2017-10-04 18:55:26 +08:00
    冒泡排序下
    Sikoay
        6
    Sikoay  
       2017-10-04 19:18:35 +08:00 via Android
    先转换为 int 再比较排序啊
    messyidea
        7
    messyidea  
       2017-10-04 19:22:49 +08:00
    字符串默认的比较函数不就是字典序么
    shiny
        8
    shiny  
       2017-10-04 19:31:33 +08:00
    <?php
    $items =["111", "333", "555", "222", "444", "666"];
    sort($items);
    var_dump($items);


    结果没有问题吧,担心哪天 PHP 行为不按数字类型比较的话,翻手册 sort 有个参数可以设置成 SORT_NUMERIC
    60791151
        9
    60791151  
       2017-10-05 08:16:17 +08:00
    转成 int 然后再排序
    gouchaoer
        10
    gouchaoer  
       2017-10-05 12:52:00 +08:00 via Android
    在业务代码里你不需要知道是 int 还是 string,而且印象里从数据库查到的数据都是 string
    zhx1991
        11
    zhx1991  
       2017-10-05 23:49:28 +08:00
    想这样排是怎么排?

    规则没说清楚啊

    99 比 0111 大还是小? 输入有除了 0-9 的其它字符吗?

    字符串长度有限制吗?
    aimerforreimu
        12
    aimerforreimu  
       2017-11-10 15:15:33 +08:00
    ```php
    $test = array
    (
    '111','222','444','555','777','333','666'
    );

    sort($test);
    echo '<pre>';

    var_dump($test);
    ```

    直接用 sort 啊
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1829 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 16:24 · PVG 00:24 · LAX 08:24 · JFK 11:24
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.