zoukankan      html  css  js  c++  java
  • PHP二维数组排序 array_multisort

    array_multisort — 对多个数组或多维数组进行排序

    array_multisort() 可以用来一次对多个数组进行排序,或者根据某一维或多维对多维数组进行排序。

    关联(string)键名保持不变,但数字键名会被重新索引

    返回值

    成功时返回 TRUE, 或者在失败时返回 FALSE

    参数

    array1

    要排序的 array

    array1_sort_order

    之前 array 参数要排列的顺序。 SORT_ASC 按照上升顺序排序, SORT_DESC 按照下降顺序排序。

    此参数可以和 array1_sort_flags 互换,也可以完全删除,默认是 SORT_ASC 。

    array1_sort_flags

    为 array 参数设定选项:

    排序类型标志:

    • SORT_REGULAR - 将项目按照通常方法比较(不修改类型)
    • SORT_NUMERIC - 按照数字大小比较
    • SORT_STRING - 按照字符串比较
    • SORT_LOCALE_STRING - 根据当前的本地化设置,按照字符串比较。 它会使用 locale 信息,可以通过 setlocale() 修改此信息。
    • SORT_NATURAL - 以字符串的"自然排序",类似 natsort()
    • SORT_FLAG_CASE - 可以组合 (按位或 OR) SORT_STRING 或者 SORT_NATURAL 大小写不敏感的方式排序字符串。

    参数可以和 array1_sort_order 交换或者省略,默认情况下是 SORT_REGULAR

     

    Example #1 多个数组排序

    <?php
    $ar1 = array(10, 100, 100, 0);
    $ar2 = array(1, 3, 2, 4);
    array_multisort($ar1, $ar2);
    
    var_dump($ar1);
    var_dump($ar2);
    ?>

    结果:
    array(4) {
      [0]=> int(0)
      [1]=> int(10)
      [2]=> int(100)
      [3]=> int(100)
    }
    array(4) {
      [0]=> int(4)
      [1]=> int(1)
      [2]=> int(2)
      [3]=> int(3)
    }

    Example #2 排序多维数组

    <?php
    $ar = array(
           array("10", 11, 100, 100, "a"),
           array(   1,  2, "2",   3,   1)
          );
    array_multisort($ar[0], SORT_ASC, SORT_STRING,
                    $ar[1], SORT_NUMERIC, SORT_DESC);
    var_dump($ar);
    ?>

    结果:

    array(2) {
      [0]=> array(5) {
        [0]=> string(2) "10"
        [1]=> int(100)
        [2]=> int(100)
        [3]=> int(11)
        [4]=> string(1) "a"
      }
      [1]=> array(5) {
        [0]=> int(1)
        [1]=> int(3)
        [2]=> string(1) "2"
        [3]=> int(2)
        [4]=> int(1)
      }
    }

    Example #3 对数据库结果进行排序

    <?php
    $data[] = array('volume' => 67, 'edition' => 2);
    $data[] = array('volume' => 86, 'edition' => 1);
    $data[] = array('volume' => 85, 'edition' => 6);
    $data[] = array('volume' => 98, 'edition' => 2);
    $data[] = array('volume' => 86, 'edition' => 6);
    $data[] = array('volume' => 67, 'edition' => 7);
    ?>

    <?php
    // 将数据根据 volume 降序排列,根据 edition 升序排列
    // 把 $data 作为最后一个参数,以通用键排序
    array_multisort(array_column($data,'volume'), SORT_DESC, array_column($data,'edition'), SORT_ASC, $data);
    ?>
  • 相关阅读:
    iOS开发之swift与OC混编出现的坑,oc中不能对swift的代理进行调用,不能访问swift中的代理,swift中的回调方法
    Apple开发者账号更改公司名称
    iOS端实现节日换肤
    那些惊艳了我的第三方插件收集
    【iOS】Mapkit的使用:地图显示、定位、大头针、气泡等
    iOS 10中如何搭建一个语音转文字框架
    哈夫曼树
    多叉树的建立以及其他的一些操作
    决策树(2)
    决策树算法(1)含java源代码
  • 原文地址:https://www.cnblogs.com/ivy-zheng/p/12557645.html
Copyright © 2011-2022 走看看