解析PHP中数组元素升序、降序以及重新排序的函数


Posted in PHP onJune 20, 2013

1,快速创建数组的函数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

2,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 
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)

3,PHP中关联数组的排序
PHP除了支持数字索引数组以外,还支持相关数组。比如如下数组就是一个相关(关联)数组:

$peoples=array('xm'=>'name','xb'=>'sex','mz'=>'nation','cs'=>'birth');

使用sort($peoples)默认即是按照元素定义值的升序排序,在关联数组中可使用asort()函数表示,关联数组中最主要的则是可按照关键字(如xm、xb、mz等)的升序排序,该方法是用函数ksort()函数。
<?php 
$peoples=array('xm'=>'name','xb'=>'sex','mz'=>'nation','cs'=>'birth');
foreach ($peoples as $mychrs)
    echo $mychrs." ";
echo "<br />--按元素值升序排列--<br />";
asort($peoples);
foreach ($peoples as $mychrs)
    echo $mychrs." ";
echo "<br />--按关键字升序排列--<br />";
ksort($peoples);
foreach ($peoples as $mychrs)
    echo $mychrs." ";
?>

和常规数组拥有sort()升序函数的反向排序rsort()降序函数相对应的,关联数组也有对应的降序函数:asort()函数和arsort()函数、ksort()函数和krsort()函数。
记忆:原型函数是sort(),其中a、k表示关联数组相关必须前置,反向排序使用r修饰。

4,PHP数组元素随机排序
PHP中使用shuffle()函数将数组元素进行随机的重新排序,比如:

<?php 
$fer=array('cnbruce','cnrose','cnjames','cnanne');
shuffle($fer);
foreach ($fer as $mychrs)
echo $mychrs." ";
?>

每次都会显示不同的排序组合

5,PHP数组按原顺序反向排序
PHP中可使用array_reverse()函数将数组元素按原顺序反向排序。比如:

<?php 
$fer=array('cnbruce','cnrose','cnjames','cnanne');
foreach ($fer as $mychrs)
echo $mychrs." ";
$fer=array_reverse($fer);
echo "<br />--按原顺序反向--<br />";
foreach ($fer as $mychrs)
echo $mychrs." ";
?>

cnbruce cnrose cnjames cnanne
--按原顺序反向--
cnanne cnjames cnrose cnbruce
注意这里的 $fer=array_reverse($fer); 在此之前的任何排序函数均只是声明引用,并没有对原有数组进行重新定义,但当我调试该函数时则需要重新定义。这是因为array_reverse()是返回原数组修改后的副本,如果不需要原有数组,可对原数组重新定义达到覆盖的目的,否则就另外定义数组保存副本,比如:$fer_bak=array_reverse($fer);
PHP 相关文章推荐
15个小时----从修改程序到自己些程序
Oct 09 PHP
建立动态的WML站点(二)
Oct 09 PHP
利用static实现表格的颜色隔行显示的代码
Sep 02 PHP
php 学习资料零碎东西
Dec 04 PHP
php后门URL的防范
Nov 12 PHP
php中调用其他系统http接口的方法说明
Feb 28 PHP
php中数字0和空值的区别分析
Jun 05 PHP
非常全面的php日期时间运算汇总
Nov 04 PHP
详解PHP实现执行定时任务
Dec 21 PHP
php生成图片缩略图功能示例
Feb 22 PHP
php获取微信基础接口凭证Access_token
Aug 23 PHP
php常用字符串长度函数strlen()与mb_strlen()用法实例分析
Jun 25 PHP
解析php中的fopen()函数用打开文件模式说明
Jun 20 #PHP
深入解析PHP内存管理之谁动了我的内存
Jun 20 #PHP
解析php中die(),exit(),return的区别
Jun 20 #PHP
有关PHP性能优化的介绍
Jun 20 #PHP
数组与类使用PHP的可变变量名需要的注意的问题
Jun 20 #PHP
解析使用ThinkPHP应该掌握的调试手段
Jun 20 #PHP
php echo, print, print_r, sprintf, var_dump, var_expor的使用区别
Jun 20 #PHP
You might like
索尼SONY ICF-SW7600GR电路分析与改良
2021/03/02 无线电
PHP操作文件方法问答
2007/03/16 PHP
探讨捕获php错误信息方法的详解
2013/06/09 PHP
两种php去除二维数组的重复项方法
2015/11/04 PHP
PHP中的use关键字及文件的加载详解
2016/11/28 PHP
PHP在同一域名下两个不同的项目做独立登录机制详解
2017/09/22 PHP
javascript学习笔记(九)javascript中的原型(prototype)及原型链的继承方式
2011/04/12 Javascript
50款非常棒的 jQuery 插件分享
2012/03/29 Javascript
jQuery检测滚动条是否到达底部
2015/12/15 Javascript
jquery使用on绑定a标签无效 只能用live解决
2016/06/02 Javascript
bootstrap学习笔记之初识bootstrap
2016/06/21 Javascript
Thinkphp5微信小程序获取用户信息接口的实例详解
2017/09/26 Javascript
vue2 mint-ui loadmore实现下拉刷新,上拉更多功能
2018/03/21 Javascript
jQuery使用$.extend(true,object1, object2);实现深拷贝对象的方法分析
2019/03/06 jQuery
说说如何利用 Node.js 代理解决跨域问题
2019/04/22 Javascript
8 个有用的JS技巧(推荐)
2019/07/03 Javascript
微信小程序项目总结之记账小程序功能的实现(包括后端)
2019/08/20 Javascript
es6中class类静态方法,静态属性,实例属性,实例方法的理解与应用分析
2020/02/15 Javascript
序列化模块json代码实例详解
2020/03/03 Javascript
[47:03]完美世界DOTA2联赛PWL S3 access vs LBZS 第一场 12.20
2020/12/23 DOTA
Python ORM框架SQLAlchemy学习笔记之安装和简单查询实例
2014/06/10 Python
在Lighttpd服务器中运行Django应用的方法
2015/07/22 Python
python实时分析日志的一个小脚本分享
2017/05/07 Python
python实现手机通讯录搜索功能
2018/02/22 Python
Numpy中的mask的使用
2018/07/21 Python
Python之time模块的时间戳,时间字符串格式化与转换方法(13位时间戳)
2019/08/12 Python
python实现WebSocket服务端过程解析
2019/10/18 Python
python实现简单的购物程序代码实例
2020/03/03 Python
python自动脚本的pyautogui入门学习
2020/04/01 Python
python关于倒排列的知识点总结
2020/10/13 Python
有关HTML5页面在iPhoneX适配问题
2017/11/13 HTML / CSS
初三政治教学反思
2014/01/30 职场文书
项目投资合作意向书
2014/07/29 职场文书
面试通知邮件
2015/04/20 职场文书
毕业论文答辩演讲稿
2015/06/23 职场文书
大学社团活动总结怎么写
2019/06/21 职场文书