zoukankan      html  css  js  c++  java
  • array_multisort()

    有时候我们需要对二维数组的某个键的值进行排序,这里就是讨论这个问题。我们可以使用array_multisort()这个函数。array_multisort() 函数对多个数组或多维数组进行排序。
    
    参数中的数组被当成一个表的列并以行来进行排序 - 这类似 SQL 的 ORDER BY 子句的功能。第一个数组是要排序的主要数组。数组中的行(值)比较为相同的话,就会按照下一个输入数组中相应值的大小进行排序,依此类推。
    
    第一个参数是数组,随后的每一个参数可能是数组,也可能是下面的排序顺序标志(排序标志用于更改默认的排列顺序)之一:
    
    SORT_ASC - 默认,按升序排列。(A-Z)
    SORT_DESC - 按降序排列。(Z-A)
    随后可以指定排序的类型:
    
    SORT_REGULAR - 默认。将每一项按常规顺序排列。
    SORT_NUMERIC - 将每一项按数字顺序排列。
    SORT_STRING - 将每一项按字母顺序排列。
    语法:array_multisort(array1,sorting order,sorting type,array2,array3...)
    
    array1:必需。规定输入的数组。
    sorting order:可选。规定排列顺序。可能的值是 SORT_ASC 和 SORT_DESC。
    sorting type:可选。规定排序类型。可能的值是SORT_REGULAR、SORT_NUMERIC和SORT_STRING。
    array2:可选。规定输入的数组。
    array3:可选。规定输入的数组。
    字符串键名将被保留,但是数字键将被重新索引,从 0 开始,并以 1 递增。可以在每个数组后设置排序顺序和排序类型。如果没有设置,每个数组参数会使用默认值。
    
    下面是一个例子:
    
    01
    <?php
    02
         
    03
        $arr = '';
    04
         
    05
        echo '二维数组如下:'.'<br / >';
    06
        for($i=0; $i<=5; $i++)
    07
        {
    08
            $arr[$i]['val'] = mt_rand(1, 100);
    09
            $arr[$i]['num'] = mt_rand(1, 100);
    10
        }
    11
         
    12
        echo '<pre>';
    13
        print_r($arr);
    14
        echo '</pre>';
    15
         
    16
        echo '从二维数组中抽出键为val,单独成另一个数组:'.'<br / >';
    17
        foreach ($arr as $key => $row)
    18
        {
    19
            $vals[$key] = $row['val'];
    20
            $nums[$key] = $row['num'];
    21
        }
    22
         
    23
        echo '<pre>';
    24
        print_r($vals);
    25
        echo '</pre>';
    26
         
    27
        echo '对其进行排序:'.'<br / >';
    28
        array_multisort($vals, SORT_ASC, $arr);
    29
         
    30
        echo '<pre>';
    31
        print_r($vals);
    32
        echo '</pre>';
    33
         
    34
    ?>
    运行结果:
    
    01
    二维数组如下:
    02
    Array
    03
    (
    04
        [0] => Array
    05
            (
    06
                [val] => 46
    07
                [num] => 49
    08
            )
    09
        [1] => Array
    10
            (
    11
                [val] => 8
    12
                [num] => 24
    13
            )
    14
        [2] => Array
    15
            (
    16
                [val] => 37
    17
                [num] => 3
    18
            )
    19
        [3] => Array
    20
            (
    21
                [val] => 32
    22
                [num] => 35
    23
            )
    24
        [4] => Array
    25
            (
    26
                [val] => 19
    27
                [num] => 38
    28
            )
    29
        [5] => Array
    30
            (
    31
                [val] => 30
    32
                [num] => 37
    33
            )
    34
    )
    35
    从二维数组中抽出键为val,单独成另一个数组:
    36
    Array
    37
    (
    38
        [0] => 46
    39
        [1] => 8
    40
        [2] => 37
    41
        [3] => 32
    42
        [4] => 19
    43
        [5] => 30
    44
    )
    45
    对其进行排序:
    46
    Array
    47
    (
    48
        [0] => 8
    49
        [1] => 19
    50
        [2] => 30
    51
        [3] => 32
    52
        [4] => 37
    53
        [5] => 46
    54
    )
    我们将得到一个按val升序排序的二维数组。
  • 相关阅读:
    maven管理jar,pom.xml导入spring依赖
    三分钟明白 Activiti工作流 -- java运用
    Java框架之spring—jdbcTemplate
    Activiti BPMN 2.0 designer eclipse插件安装
    eclipse离线安装Activiti Designer插件
    eclipse oxygen离线安装activiti
    使用spring注解——定义bean和自动注入
    web.config中配置数据库连接的两种方式
    Java的三种代理模式
    03 Spring框架 bean的属性以及bean前处理和bean后处理
  • 原文地址:https://www.cnblogs.com/fyy-888/p/5381864.html
Copyright © 2011-2022 走看看