php 数组排序各种方法总结
发布:smiling 来源: PHP粉丝网 添加日期:2014-01-06 23:31:05 浏览: 评论:0
在php中数组排序函数有很多很多,下面我来给各位朋友总结我们常用到的一些数组排序函数与用户自己写的数组排序实例.
数组排序最常用的函数就是 sort($arr); 它的作用是按数组的键值升序排列,并且排序后的数组键名不再是原来的键名,是按新数组来重新设置的键名。
而有时我们要求更复杂的排序。如按键名排序,这里用到 ksort($arr); 函数,它会根据数组的键名排序,并维持原有的键值关系。相对应的 asort($arr); 函数,是按键值排序,且维持原有的键值关系。
同样原理,rsort(); arsort(); krsort(); 函数除了排序是按降序排列外,其它与sort(); rsort(); ksort(); 相同。
数组操作是PHP很重要的基础,希望能好好运用。
按键值排序,即按标识符ASCⅡ码值的大小排列顺序。
ksort(): 按照数组标识符顺序排列
krsort(): 按照数组标识符逆序排
实例1,代码如下:
- <?php
- $languages=array(
- 'c'=>'php',
- 'd'=>'asp',
- 'a'=>'jsp',
- 'b'=>'java'
- );
- krsort($languages);
- foreach($languages as $key=>$val){
- echo "$key = $val".'<br>';
- };
- ?>
按元素值排序
asort(): 按照由小到大的顺序对数组排序;
rsort(): 按照由大到小的顺序对数组逆序排序。
将实例1的8-11行代码改为:
- asort($languages);
- print_r($languages);
- echo "<br>";
- rsort($languages);
- print_r($languages);
删除原有键名排序
sort(): 按照由小到大的顺序对数组排序;
rsort(): 按照由大到小的顺序对数组逆序排序。
将实例2的8-11行代码改为:
- sort($languages);
- foreach($languages as $key=>$val){
- echo "languages[$key] = $val".'<br>';
- };
array_multisort -- 对多个数组或多维数组进行排序
说明:bool array_multisort ( array ar1 [, mixed arg [, mixed ... [, array ...]]] )
例子1.对多个数组排序,代码如下:
- <?php
- $ar1 = array("10", 100, 100, "a");
- $ar2 = array(1, 3, "2", 1);
- array_multisort($ar1, $ar2);
- var_dump($ar1);
- var_dump($ar2);
- ?>
本例中经过排序后,第一个数组将包含 "10","a",100,100。第二个数组将包含 1,1,"2",3。第二个数组中的项目顺序完全和第一个数组中相应的项目(100 和 100)顺序一致,代码如下:
- array(4) {
- [0]=> string(2) "10"
- [1]=> string(1) "a"
- [2]=> int(100)
- [3]=> int(100)
- }
- array(4) {
- [0]=> int(1)
- [1]=> int(1)
- [2]=> string(1) "2"
- [3]=> int(3)
- }
例子2,对多维数组排序,代码如下:
- <?php
- $ar = array (array ("10", 100, 100, "a"), array (1, 3, "2", 1));
- array_multisort ($ar[0], SORT_ASC, SORT_STRING,
- $ar[1], SORT_NUMERIC, SORT_DESC);
- ?>
PHP数组排序函数很多,也很强大,如:arsort,asort,krsort,ksort,sort…,但有时候还是满足不了我们的需求,假如有一个二维数组,我们要按二维数组中的一个值来排序,就需要用到了usort自定义数组排序,例子如下:
- <?php
- $aa = array (array ("score"=>60),
- array ("score"=>70),
- array ("score"=>80),
- array ("score"=>90),
- array ("score"=>20),
- array ("score"=>10),
- array ("score"=>50),
- array ("score"=>30));
- echo '------排序前输出------<br />';
- var_dump($aa); // 排序前输出
- usort($aa, "cmp"); // 排序处理(从大到小)
- echo '<br />------排序后输出------<br />';
- var_dump($aa); // 排序完输出
- /**
- * 自定义排序条件
- * @param array $a
- * @param array $b
- * @return bool
- */
- function cmp($a, $b) {
- if ($a["score"] == $b["score"]) {
- return 0;
- }
- return ($a["score"] < $b["score"]) ? 1 : -1;
- }
- ?>
输出结果:
------排序前输出------
------排序后输出------
Tags: php数组 排序 方法总结
- 上一篇:php查找数组元素各种方法总结
- 下一篇:PHP数组的高级遍历和操作处理方法
相关文章
- ·php中向数组中插入一元素程序代码(2014-01-03)
- ·php数组删除元素各种方法总结(2014-01-06)
- ·PHP数组的高级遍历和操作处理方法(2014-01-07)
- ·PHP取数组第一个元素与删除数组实例(2014-01-07)
- ·php将数组变量保存到文件(2014-01-08)
- ·php数组操作函数之array_push()函数用法与定义(2014-01-15)
- ·php数组之数组的元素值进行降序排序rsort()函数(2014-01-15)
- ·php数组定义与变量销毁和一维数组排序(2014-01-16)
- ·php中数组遍历循环实现程序(2014-01-16)
- ·php数组排序之多维数组与一维数组(2014-01-16)
- ·php中数组的并集、交集和差集函数介绍(2014-01-16)
- ·PHP学习笔记之数组值及数组遍历和排序(2014-02-22)
- ·php数组定义入门教程详解(2014-02-23)
- ·php给数组赋值(二维数组赋值)详解(2014-02-23)
- ·php数组与对象相互转换方法(2014-05-22)
- ·php 数组的定义和初始化学习笔记(2014-05-30)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)