解析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 相关文章推荐
PHP小技巧搜集,每个PHPer都来露一手
Jan 02 PHP
phplock(php进程锁) v1.0 beta1
Nov 24 PHP
PHP strtotime函数详解
Dec 18 PHP
linux下为php添加curl扩展的方法
Jul 29 PHP
php修改NetBeans默认字体的大小
Jul 02 PHP
thinkphp实现上一篇与下一篇的方法
Dec 08 PHP
php中的观察者模式简单实例
Jan 20 PHP
php+mysql结合Ajax实现点赞功能完整实例
Jan 30 PHP
PHP中PDO的事务处理分析
Apr 07 PHP
Yii2中YiiBase自动加载类、引用文件方法分析(autoload)
Jul 25 PHP
PHP实现简单的协程任务调度demo示例
Feb 01 PHP
php反序列化长度变化尾部字符串逃逸(0CTF-2016-piapiapia)
Feb 15 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
PHP读取RSS(Feed)简单实例
2014/06/12 PHP
PHP针对伪静态的注入总结【附asp与Python相关代码】
2017/08/01 PHP
PHP实现打包下载文件的方法示例
2017/10/07 PHP
Laravel框架自定义公共函数的引入操作示例
2019/04/16 PHP
读jQuery之二(两种扩展)
2011/06/11 Javascript
JavaScript调用ajax获取文本文件内容实现代码
2014/03/28 Javascript
angularJS中router的使用指南
2015/02/09 Javascript
jquery实现点击弹出可放大居中及关闭的对话框(附demo源码下载)
2016/05/10 Javascript
JavaScript 闭包机制详解及实例代码
2016/10/10 Javascript
backbone简介_动力节点Java学院整理
2017/07/14 Javascript
详解Vue2.x-directive的学习笔记
2017/07/17 Javascript
jQuery实现简单的计时器功能实例分析
2017/08/29 jQuery
p5.js入门教程之平滑过渡(Easing)
2018/03/16 Javascript
微信小程序实现自定义picker选择器弹窗内容
2020/05/26 Javascript
使用iView Upload 组件实现手动上传图片的示例代码
2018/10/01 Javascript
详解Vue依赖收集引发的问题
2019/04/22 Javascript
基于better-scroll 实现歌词联动功能的代码
2020/05/07 Javascript
JS使用Chrome浏览器实现调试线上代码
2020/07/23 Javascript
[59:00]DOTA2-DPC中国联赛 正赛 Ehome vs PSG.LGD BO3 第一场 3月7日
2021/03/11 DOTA
Python备份Mysql脚本
2008/08/11 Python
python中Matplotlib实现绘制3D图的示例代码
2017/09/04 Python
Python如何实现MySQL实例初始化详解
2017/11/06 Python
详解Django的CSRF认证实现
2018/10/09 Python
Pycharm设置去除显示的波浪线方法
2018/10/28 Python
在python中,使用scatter绘制散点图的实例
2019/07/03 Python
Python中logger日志模块详解
2020/08/04 Python
英国领先的狗和宠物美容专家:Christies Direct
2017/04/03 全球购物
马来西亚在线时尚女装商店:KEI MAG
2017/09/28 全球购物
新西兰最大的在线设计师眼镜店:SmartBuyGlasses新西兰
2017/10/20 全球购物
物理教育专业毕业生推荐信
2013/11/03 职场文书
体育教育毕业生自荐信
2013/11/21 职场文书
应届大学生求职信
2013/12/01 职场文书
赔偿协议书
2015/01/27 职场文书
个性发展自我评价2015
2015/03/09 职场文书
python基础之停用词过滤详解
2021/04/21 Python
MYSQL 表的全面总结
2021/11/11 MySQL