php 常用排序

1. sort()

  • 语法: bool sort ( array &$array [, int $sort_flags = SORT_REGULAR ] )
  • 说明:本函数对数组进行排序。当本函数结束时数组单元将被从最低到最高重新安排。
  • 注意:不会对键值进行处理,关联数组排序后变索引数组。

2. rsort()

  • 语法:bool rsort ( array &$array [, int $sort_flags = SORT_REGULAR ] )
  • 说明:本函数对数组进行逆向排序(最高到最低)。
  • 注意:同上。

3. asort() 对数组进行排序并保持索引关系

  • 语法:bool asort ( array &$array [, int $sort_flags = SORT_REGULAR ] )
  • 说明:本函数对数组进行排序,数组的索引保持和单元的关联。主要用于对那些单元顺序很重要的结合数组进行排序。
  • Note: If two members compare as equal, their relative order in the sorted array is undefined.(未找到反例)

4. ksort() 对数组按照键名排序并保持索引关系

  • 语法:bool ksort ( array &$array [, int $sort_flags = SORT_REGULAR ] )
  • 说明:对数组按照键名排序,保留键名到数据的关联。本函数主要用于关联数组。

5. arsort() 对数组进行逆向排序并保持索引关系

  • 语法:bool arsort ( array &$array [, int $sort_flags = SORT_REGULAR ] )
  • 说明:本函数对数组进行排序,数组的索引保持和单元的关联。主要用于对那些单元顺序很重要的结合数组进行排序。
  • 注意:同3.

6. krsort() 对数组按照键名逆向排序并保持索引关系

  • 语法:bool krsort ( array &$array [, int $sort_flags = SORT_REGULAR ] )
  • 说明:对数组按照键名逆向排序,保留键名到数据的关联。主要用于结合数组。

7. usort() 自定义比较函数对数组中的值进行排序

  • 语法:bool usort ( array &$array , callable $value_compare_func )
  • 说明:本函数将用用户自定义的比较函数对一个数组中的值进行排序。 如果要排序的数组需要用一种不寻常的标准进行排序,那么应该使用此函数。
  • note : 此函数为 array 中的元素赋与新的键名。这将删除原有的键名,而不是仅仅将键名重新排序。
  • 参数cmp_function说明:int callback ( mixed $a, mixed $b ),在第一个参数小于,等于或大于第二个参数时,该比较函数必须相应地返回一个小于,等于或大于 0 的整数。(小于-小于,该种情况顺序排列)

8. uasort() 自定义比较函数对数组中的进行排序并保持索引关联

  • 语法: bool uksort ( array &$array , callable $key_compare_func )
  • 其他同上

9. uksort() 自定义比较函数对数组中的进行排序并保持索引关联

  • 语法:bool uksort ( array &$array , callable $key_compare_func )
  • 其他同上

shuffle() 打乱数组

  • 语法: bool shuffle ( array &$array )

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

  • 语法:bool array_multisort ( array &$array1 [, mixed $array1_sort_order = SORT_ASC [, mixed $array1_sort_flags = SORT_REGULAR [, mixed $... ]]] )
  • 说明:可以用来一次对多个数组进行排序,或者根据某一维或多维对多维数组进行排序。
  • 例1: (根据数组一的升序排序对数组二进行排序)
    $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)
    }
    
    • 例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);
    
    本例中在排序后,第一个数组将变成 “10”,100,100,11,“a”(被当作字符串以升序排列)。第二个数组将包含 1, 3, “2”, 2, 1(被当作数字以降序排列)。
    输出:
    	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)
    	  }
    	}
    
    • 例3:对数据库结果进行排序
    $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);
    //将把 volume 降序排列,把 edition 升序排列。
    
    // 取得列的列表
    foreach ($data as $key => $row) {
        $volume[$key]  = $row['volume'];
        $edition[$key] = $row['edition'];
    }
    
    // 将数据根据 volume 降序排列,根据 edition 升序排列
    // 把 $data 作为最后一个参数,以通用键排序
    array_multisort($volume, SORT_DESC, $edition, SORT_ASC, $data);
    
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值