PHP 数组排序方法总结 推荐收藏


Posted in PHP onJune 30, 2010

随着PHP的快速发展,用它的人越来越多,在PHP数组学习摘录部分了解到最基本的PHP数组的建立和数组元素的显示。需要深入学习下PHP数组的相关操作。首先接触的就是PHP数组排序、降序的排序问题。

sort:本函数为 array 中的单元赋予新的键名。这将删除原有的键名而不仅是重新排序。
rsort:本函数对数组进行逆向排序(最高到最低)。 删除原有的键名而不仅是重新排序。
asort:对数组进行排序并保持索引关系
arsort:对数组进行逆向排序并保持索引关系

ksort:对数组按照键名排序,保留键名到数据的关联
krsort:对数组按照键名逆向排序,保留键名到数据的关联

natsort:对字母数字字符串进行排序并保持原有键/值的关联
natcasesort:同natsort排序算法,但不区分大小写字母排序

PHP 数组排序(sort)
数字索引数组排序:
函数:sort(array, [sort type])
说明:sort()函数按升序对指定数组(第一个参数)进行排序。
sort函数第二参数作用为指定排序类型,是可选参数,可能的值为:
SORT_REGULAR: 默认值,不改变类型进行排序;
SORT_NUMERIC: 把值作为数字进行排序;
SORT_STRING: 把值作为字符串进行排序;
如数组中有4和”37″,按数字排序,4小于”37″;按字符串排序,4大于”37″;

<?php 
$a = array(4,"37",3,100,0,-5); 
sort($a); 
for ($i=0; $i<6; ++$i){ 
echo $a[$i]." "; 
} 
echo "<br />"; 
sort($a,SORT_STRING); 
for ($i=0; $i<6; ++$i){ 
echo $a[$i]." "; 
} 
echo "<br />"; 
?>

输出结果:

-5 0 3 4 37 100
-5 0 100 3 37 4

降序排序:rsort(array, [sort type])
参数用法与sort函数相同。

关联数组排序:
函数:asort(array, [sort type])
说明:根据关联数组的元素值进行升序排序。参数使用见上面的sort函数。

函数:ksort(array, [sort type])
说明:根据关联数组的关键字进行升序排序。参数使用见上面的sort函数。

<?php 
$a = array( 
"good" => "bad", 
"right" => "wrong", 
"boy" => "girl"); echo "value sort<br />"; 
asort($a); 
foreach($a as $key => $value){ 
echo "$key : $value<br />"; 
} 
echo "<br />key sort<br />"; 
ksort($a); 
foreach($a as $key => $value){ 
echo "$key : $value<br />"; 
} 
?>

输出结果:

value sort
good : bad
boy : girl
right : wrong

key sort
boy : girl
good : bad
right : wrong
降序排序:
arsort(array, [sort type]) 与 asort对应
krsort(array, [sort type]) 与 ksort对应

快速创建数组的函数range()

比如range()函数可以快速创建从1到9的数字数组:

<?php 
$numbers=range(1,9); 
echo $numbers[1]; 
?>

当然,使用range(9,1)则创建了9到1的数字数组。同时,range()还可以创建从a到z 的字符数组:
<?php 
$numbers=range(a,z); 
foreach ($numbers as $mychrs) 
echo $mychrs." "; 
?>

使用字符数组时注意大小写,比如range(A,z)和range(a,Z)是不一样的。range()函数还具有第三个参数,该参数的作用是设定步长,比如range(1,9,3)创建的数组元素是:1、4、7。常见PHP数组排序一般数组中的各元素均以字符或数字表现的,所以可对数组元素进行升序排列,该功能函数为sort()。比如:

<?php 
$people=array('name','sex','nation','birth'); 
foreach ($people as $mychrs) 
echo $mychrs." "; 
sort($people); 
echo "<br />---排序后---<br />"; 
foreach ($people as $mychrs) 
echo $mychrs." "; 
?>

升序排序后的数组元素显示为 birth name nation sex,当然,sort()函数是区分字母大小写的(字母从大到小的顺序是:A…Z…a…z)

Sort()函数还具有第二参数,用来说明PHP数组排序升序的规则是用来比较数字还是字符串的。比如:

<?php 
echo "---按数字升序排序---<br />"; 
$num2=array('26','3',); 
sort($num2,SORT_NUMERIC); 
foreach ($num2 as $mychrs) 
echo $mychrs." "; 
echo "<br />---按字符升序排序---<br />"; 
$num3=array('26','3'); 
sort($num3,SORT_STRING); 
foreach ($num3 as $mychrs) 
echo $mychrs." "; 
?>

SORT_NUMERIC和SORT_STRING用来声明按数字或字符的升序排列。如果按照数字升序排列是:3,26;但如果按照字符升序排列则是:26,3了。PHP中除了升序函数以外,还有降序或称反向排列的函数,就是rsort()函数,比如:$num1=range(1,9);rsort($num1);这里其实就相当于range(9,1)。
PHP 相关文章推荐
在任意字符集下正常显示网页的方法一
Apr 01 PHP
PHP性能优化 产生高度优化代码
Jul 22 PHP
用Php编写注册后Email激活验证的实例代码
Mar 11 PHP
自编函数解决pathinfo()函数处理中文问题
Nov 03 PHP
php计算数组相同值出现次数的代码(array_count_values)
Jan 20 PHP
php比较两个字符串长度的方法
Jul 13 PHP
ThinkPHP中数据操作案例分析
Sep 27 PHP
示例详解Laravel的注册重构
Aug 14 PHP
PHP用正则匹配form表单中所有元素的类型和属性值实例代码
Feb 28 PHP
关于ThinkPhp 框架表单验证及ajax验证问题
Jul 19 PHP
PHP自定义函数实现数组比较功能示例
Oct 19 PHP
PHP count()函数讲解
Feb 03 PHP
超级好用的一个php上传图片类(随机名,缩略图,加水印)
Jun 30 #PHP
PHP字符串处理的10个简单方法
Jun 30 #PHP
php flv视频时间获取函数
Jun 29 #PHP
PHP常用代码大全(新手入门必备)
Jun 29 #PHP
PHP print类函数使用总结
Jun 25 #PHP
php url地址栏传中文乱码解决方法集合
Jun 25 #PHP
PHP+ACCESS 文章管理程序代码
Jun 21 #PHP
You might like
PHP PDOStatement:bindParam插入数据错误问题分析
2013/11/13 PHP
php数组中包含中文的排序方法
2014/06/03 PHP
php生成二维码时出现中文乱码的解决方法
2014/12/18 PHP
php面向对象中static静态属性与方法的内存位置分析
2015/02/08 PHP
Yii框架防止sql注入,xss攻击与csrf攻击的方法
2016/10/18 PHP
Jquery Autocomplete 结合asp.net使用要点
2010/10/29 Javascript
Jquery实现搜索框提示功能示例代码
2013/08/13 Javascript
怎么选择Javascript框架(Javascript Framework)
2013/11/22 Javascript
javascript实现浏览器窗口传递参数的方法
2014/09/03 Javascript
JavaScript中document对象使用详解
2015/01/06 Javascript
jQuery实现页面顶部显示的进度条效果完整实例
2015/12/09 Javascript
jquery自适应布局的简单实例
2016/05/28 Javascript
JavaScript必知必会(五) eval 的使用
2016/06/08 Javascript
js窗口震动小程序分享
2016/11/28 Javascript
基于jQuery实现图片推拉门动画效果的两种方法
2017/08/26 jQuery
vue 解决addRoutes动态添加路由后刷新失效问题
2018/07/02 Javascript
vue实现pdf导出解决生成canvas模糊等问题(推荐)
2018/10/18 Javascript
详解vue移动端项目代码拆分记录
2019/03/15 Javascript
Vue Echarts实现可视化世界地图代码实例
2019/05/07 Javascript
微信头像地址失效踩坑记附带解决方案
2019/09/23 Javascript
文章或博客自动生成章节目录索引(支持三级)的实现代码
2020/05/10 Javascript
Vue点击切换Class变化,实现Active当前样式操作
2020/07/17 Javascript
python获取指定时间差的时间实例详解
2017/04/11 Python
Python3中类、模块、错误与异常、文件的简易教程
2017/11/20 Python
Python Pandas找到缺失值的位置方法
2018/04/12 Python
python 多线程对post请求服务器测试并发的方法
2019/06/13 Python
python读取dicom图像示例(SimpleITK和dicom包实现)
2020/01/16 Python
Python常驻任务实现接收外界参数代码解析
2020/07/21 Python
一款纯css3实现的tab选项卡的实列教程
2014/12/11 HTML / CSS
售后服务经理岗位职责范本
2014/02/22 职场文书
预防煤气中毒方案
2014/06/16 职场文书
2014小学语文教师个人工作总结
2014/12/03 职场文书
授权委托书
2015/01/28 职场文书
辞职书格式样本
2015/02/26 职场文书
python小型的音频操作库mp3Play
2022/04/24 Python
java中如何截取字符串最后一位
2022/07/07 Java/Android