PHP 数组排序函数sort,rsort,ksort,krsort,asort,arsort区别

一、概念:
    1、自然排序法:即按自然数的大小排序,例如“10>2”;
    2、计算机标准排序法:是以逐个字符比较,排序,例如“2>10”(因为第一位2>1);
    3、数值数组:带有数字 ID 键的数组;
    4、关联数组:带有指定的键的数组,每个键关联一个值。
    5、默认的排序为按键值升序排序,排序方式为自然排序。

二、【帮助理解】
  1、a(association)前缀表示以键值关联排序;
  2、k(key)前缀表示以键名关联排序;
  3、r(reverse)前缀表示以反方向排序。

三、排序
例子:

1     $arr = array("Ben"=>"2","peter"=>"10","Joe"=>"30");
2     echo "-------------echo array-------------<br>";
3     foreach ($arr as $key => $value) {
4         # code...
5         echo "key= ".$key.",value= ".$value."<br>";
6     }

1、排序数值数组:
  1)、sort:默认的排序,即按键值升序排序,因为该函数用于排序一维数组,所有排序出来的键名会被重新规定,关联数组用此方法排序,则关联数组的键名不被保留,换成的是数字键。
  2)、rsort:该函数与sort函数用法类似,不同的是按键值逆序排序。

 1     echo "-------------sorts by sort-------------<br>";
 2     sort($arr);
 3     foreach ($arr as $key => $value) {
 4         # code...
 5         echo "key= ".$key.",value= ".$value."<br>";
 6     }
 7
 8     echo "-------------sorts by rsort-------------<br>";
 9     rsort($arr);
10     foreach ($arr as $key => $value) {
11         # code...
12         echo "key= ".$key.",value= ".$value."<br>";
13     }

输出结果:
-------------echo array-------------
key= Ben,value= 2
key= peter,value= 10
key= Joe,value= 30
-------------sorts by sort-------------
key= 0,value= 2
key= 1,value= 10
key= 2,value= 30
-------------sorts by rsort-------------
key= 0,value= 30
key= 1,value= 10
key= 2,value= 2

2、排序关联数组:
关联数组的排序有两种排序项,第一种以数组的键名排序,第二种以数组的键值排序。
    按键名排序:
        1)、ksort:按关联数组的键名升序排序,排序的结果保留键值的关联关系。
        2)、krsort:按关联数组的键名逆序排序,排序的结果保留键值的关联关系。

 1     echo "-------------sorts by ksort--------------<br>";
 2     ksort($arr);
 3     foreach ($arr as $key => $value) {
 4         # code...
 5         echo "key= ".$key.",value= ".$value."<br>";
 6     }
 7
 8     echo "-------------sorts by krsort-------------<br>";
 9     krsort($arr);
10     foreach ($arr as $key => $value) {
11         # code...
12         echo "key= ".$key.",value= ".$value."<br>";
13     }

输出结果:
-------------echo array-------------
key= Ben,value= 2
key= peter,value= 10
key= Joe,value= 30
-------------sorts by ksort--------------
key= Ben,value= 2
key= Joe,value= 30
key= peter,value= 10
-------------sorts by krsort-------------
key= peter,value= 10
key= Joe,value= 30
key= Ben,value= 2

  按键值排序:
        1)、asort:按关联数组的键值升序排序,排序的结果保留键值的关联关系
        2)、arsort:按关联数组的键值逆序排序,排序的结果保留键值的关联关系。

 1     echo "-------------sorts by asort-------------<br>";
 2     asort($arr);
 3     foreach ($arr as $key => $value) {
 4         # code...
 5         echo "key= ".$key.",value= ".$value."<br>";
 6     }
 7
 8     echo "-------------sorts by arsort-------------<br>";
 9     arsort($arr);
10     foreach ($arr as $key => $value) {
11         # code...
12         echo "key= ".$key.",value= ".$value."<br>";
13     }

输出结果:
-------------echo array-------------
key= Ben,value= 2
key= peter,value= 10
key= Joe,value= 30
-------------sorts by asort-------------
key= Ben,value= 2
key= peter,value= 10
key= Joe,value= 30
-------------sorts by arsort-------------
key= Joe,value= 30
key= peter,value= 10
key= Ben,value= 2

时间: 2024-10-07 09:14:17

PHP 数组排序函数sort,rsort,ksort,krsort,asort,arsort区别的相关文章

sort()&rsort()&ksort()&asort()&arsort()&krsort()

升序:从低到高 降序:从高到低 sort() 对数组按照值进行升序排序,将会删除原有的键名,并重新赋予新的建名 rsort() 对数组按照值进行降序排序,将会删除原有的键名,并重新赋予新的建名 ksort() 对数组按照键名进行升序排序,保留原有的建名跟值的对应关系 krsort() 对数组按照键名进行降序排序,保留原有的建名跟值的对应关系 asort() 对数组按照值进行升序排序,保留原有的建名跟值的对应关系 arsort() 对数组按照值进行降序排序,保留原有的建名跟值的对应关系 示例: <

Js 数组排序函数sort()

最近看到一个js函数sort()觉得挺有意思,写在这里与大家分享.如果有什么地方不对或者有更好的写法,也请大家不吝赐教. sort()返回一个元素已经进行了排序的 Array 对象. 1. 按字母排序 直接使用sort()函数,默认按字母顺序排. var arr = new Array("dd", "aa", "bb", "cc"); arr.sort(); 此时返回结果排序为  "aa", "b

js中的数组排序函数sort()和reverse()

对列表进行排序一般都由后台来完成,但如果列表项不多无需分布的话也可以用JS完成,要使用JS排序自然也就想到sort()方法和reverse()方法,这两函数在JS中使用得比较多大家也许比较熟悉,但对于刚接触这两函数的初学者还是需要注意几点. sort() 方法用于对数组的元素进行正序排列 reverse();方法用于对数组的元素进行倒序排列,这个没有什么可说的,所谓倒序就是大的在前面,小的在后面 例: 1 var array = [0,1,5,10,15]; 2 document.write(

(C++)STL排序函数sort和qsort的用法与区别

主要内容: 1.qsort的用法 2.sort的用法 3.qsort和sort的区别 qsort的用法: 原 型: void qsort(void *base, int nelem, int width, int (*fcmp)(const void *,const void *)); 功 能: 使用快速排序例程进行排序 参 数: 1 待排序数组首地址 2 数组中待排序元素数量 3 各元素的占用空间大小 4 指向函数的指针,用于确定排序的顺序 说 明:qsort函数是ANSI C标准中提供的,其

PHP排序函数sort底层实现分析

线性表(即线性数据结构,如数组和链表)的常规排序算法,包括冒泡.插入.选择.归并和快排,其中综合性能最好的就是快排(快速排序),所以快排在工程实践中也有大量的应用,比如很多编程语言都提供了排序函数,而这些排序函数基本都是基于快速排序实现的,比如 PHP 的数组排序函数 sort 就是如此. 今天我们将以此函数的底层实现为例,为大家展示如何基于快速排序来实现 PHP 的 sort 函数(准确的说,是综合运用了插入排序和快速排序). PHP 数组排序函数 sort 底层实现分析 首先我们来给大家介绍

PHP中的排序函数sort、asort、rsort、krsort、ksort区别分析

在php中自带了大量了数组排序函数,下面我们一一来介绍一下关于php数组排序的用法吧. sort() 函数用于对数组单元从低到高进行排序. rsort() 函数用于对数组单元从高到低进行排序. asort() 函数用于对数组单元从低到高进行排序并保持索引关系. arsort() 函数用于对数组单元从高到低进行排序并保持索引关系. ksort() 函数用于对数组单元按照键名从低到高进行排序. krsort() 函数用于对数组单元按照键名从高到低进行排序. sort() PHP sort() 函数用

PHP中的排序函数sort、asort、rsort、krsort、ksort区别分析(转)

sort() 函数用于对数组单元从低到高进行排序. rsort() 函数用于对数组单元从高到低进行排序. asort() 函数用于对数组单元从低到高进行排序并保持索引关系. arsort() 函数用于对数组单元从高到低进行排序并保持索引关系. ksort() 函数用于对数组单元按照键名从低到高进行排序. krsort() 函数用于对数组单元按照键名从高到低进行排序. sort() PHP sort() 函数用于对数组单元从低到高进行排序,如果成功则返回 TRUE,失败则返回 FALSE. 注意:

PHP二维数组排序函数

PHP一维数组的排序可以用sort(),asort(),arsort()等函数,但是PHP二维数组的排序需要自定义. 以下函数是对一个给定的二维数组按照指定的键值进行排序,先看函数定义: function array_sort($arr,$keys,$type='asc'){ $keysvalue = $new_array = array(); foreach ($arr as $k=>$v){ $keysvalue[$k] = $v[$keys]; } if($type == 'asc'){

算法学习 - STL的p排序函数(sort)使用

排序函数sort() 这个函数是STL自带的,功能很强大~ 这里教下使用方法. sort()有三个参数,第一个是排序的起始位置,第二个是排序的结束位置,第三个是排序的判断函数.函数原型为: sort(<#_RandomAccessIterator __first#>, <#_RandomAccessIterator __last#>, <#_Compare __comp#>) 这个就是原型了~ 使用方法 首先假设我们有一个vector<int> vec;向量