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 相关文章推荐
自动把纯文本转换成Web页面的php代码
Aug 27 PHP
PHP5.3.1 不再支持ISAPI
Jan 08 PHP
PHP运行出现Notice : Use of undefined constant 的完美解决方案分享
Mar 05 PHP
php使用curl发送json格式数据实例
Dec 17 PHP
destoon各类调用汇总
Jun 20 PHP
php实现递归抓取网页类实例
Apr 03 PHP
PHP易混淆知识整理笔记
Sep 24 PHP
PHP调用API接口实现天气查询功能的示例
Sep 21 PHP
Discuz不使用插件实现简单的打赏功能
Mar 21 PHP
PHP从零开始打造自己的MVC框架之路由类实现方法分析
Jun 03 PHP
PHP 模拟登陆功能实例详解
Sep 10 PHP
laravel框架 api自定义全局异常处理方法
Oct 11 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自定义函数收代码
2010/08/01 PHP
php数组合并与拆分实例分析
2015/06/12 PHP
深入讲解PHP Session及如何保持其不过期的方法
2015/08/18 PHP
PHP自带方法验证邮箱是否存在
2016/02/01 PHP
PHP制作登录异常ip检测功能的实例代码
2016/11/16 PHP
php判断是否为ajax请求的方法
2016/11/29 PHP
YII框架实现自定义第三方扩展操作示例
2019/04/26 PHP
利用Ext Js生成动态树实例代码
2008/09/08 Javascript
JS 判断undefined的实现代码
2009/11/26 Javascript
jQuery温习篇 强大的JQuery选择器
2010/04/24 Javascript
jQuery Select(单选) 模拟插件 V1.3.62 改进版
2010/07/17 Javascript
jquery dialog键盘事件代码
2010/08/01 Javascript
json的前台操作和后台操作实现代码
2012/01/20 Javascript
js写一个弹出层并锁屏效果实现代码
2012/12/07 Javascript
JavaScript全排列的六种算法 具体实现
2013/06/29 Javascript
MVVM模式中ViewModel和View、Model有什么区别?
2015/06/19 Javascript
jQuery处理XML文件的几种方法
2016/06/14 Javascript
Javascript单例模式的介绍和实例
2016/10/08 Javascript
jquery 仿锚点跳转到页面指定位置的实例
2017/02/14 Javascript
使用typescript快速开发一个cli的实现示例
2020/12/09 Javascript
Python装饰器的函数式编程详解
2015/02/27 Python
python实现网站的模拟登录
2016/01/04 Python
Python文本统计功能之西游记用字统计操作示例
2018/05/07 Python
如何基于Python实现电子邮件的发送
2019/12/16 Python
pycharm激活码有效到2020年11月底
2020/09/18 Python
Python爬取阿拉丁统计信息过程图解
2020/05/12 Python
Python descriptor(描述符)的实现
2020/11/15 Python
使用分层画布来优化HTML5渲染的教程
2015/05/08 HTML / CSS
兰蔻加拿大官方网站:Lancome加拿大
2016/08/05 全球购物
Jo Malone美国官网:祖玛珑香水
2017/03/27 全球购物
Set里的元素是不能重复的,那么用什么方法来区分重复与否呢?
2016/08/18 面试题
工程师自我评价怎么写
2013/09/19 职场文书
党性观念心得体会
2014/09/03 职场文书
公司捐书倡议书
2015/04/27 职场文书
Maven学习----Maven安装与环境变量配置教程
2021/06/29 Java/Android
MySQL导致索引失效的几种情况
2022/06/25 MySQL