解析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 相关文章推荐
我的论坛源代码(三)
Oct 09 PHP
php 图片上添加透明度渐变的效果
Jun 29 PHP
php循环创建目录示例分享(php创建多级目录)
Mar 04 PHP
Zend Framework教程之模型Model用法简单实例
Mar 04 PHP
PHP中类属性与类静态变量的访问方法示例
Jul 13 PHP
PHP常用的三种设计模式汇总
Aug 28 PHP
php添加数据到xml文件的简单例子
Sep 08 PHP
thinkPHP批量删除的实现方法分析
Nov 09 PHP
php+ajax+json 详解及实例代码
Dec 12 PHP
phpStudy中升级MySQL版本到5.7.17的方法步骤
Aug 03 PHP
RSA实现JS前端加密与PHP后端解密功能示例
Aug 05 PHP
Laravel5.5 动态切换多语言的操作方式
Oct 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
php学习 函数 课件
2008/06/15 PHP
PHP设计模式之装饰者模式代码实例
2015/05/11 PHP
ThinkPHP 模板substr的截取字符串函数详解
2017/01/09 PHP
PHP实现的激活用户注册验证邮箱功能示例
2017/06/06 PHP
php中加密解密DES类的简单使用方法示例
2020/03/26 PHP
Auntion-TableSort国人写的一个javascript表格排序的东西
2007/11/12 Javascript
Jquery乱码的一次解决过程 图解教程
2010/02/20 Javascript
Extjs根据条件设置表格某行背景色示例
2014/07/23 Javascript
JQuery中使文本框获得焦点的方法实例分析
2015/02/28 Javascript
jquery实现全选功能效果的实现代码
2016/05/05 Javascript
一篇文章搞定JavaScript类型转换(面试常见)
2017/01/21 Javascript
bootstrapvalidator之API学习教程
2017/06/29 Javascript
nodejs 子进程正确的打开方式
2017/07/03 NodeJs
React-Native实现ListView组件之上拉刷新实例(iOS和Android通用)
2017/07/11 Javascript
AngularJs ng-change事件/指令的用法小结
2017/11/01 Javascript
深入浅析Node环境和浏览器的区别
2018/08/14 Javascript
详解vuejs2.0 select 动态绑定下拉框支持多选
2019/04/25 Javascript
Vue-cli 移动端布局和动画使用详解
2020/08/10 Javascript
vue 手机物理监听键+退出提示代码
2020/09/09 Javascript
[18:20]DOTA2 HEROS教学视频教你分分钟做大人-昆卡
2014/06/11 DOTA
python实现杨辉三角思路
2017/07/14 Python
解决Django模板无法使用perms变量问题的方法
2017/09/10 Python
django+tornado实现实时查看远程日志的方法
2019/08/12 Python
Python写捕鱼达人的游戏实现
2020/03/31 Python
什么是Python中的顺序表
2020/06/02 Python
伦敦一家西班牙童装精品店:La Coqueta
2018/02/02 全球购物
动态密码技术
2012/10/18 面试题
AJAX的优缺点都有什么
2015/08/18 面试题
信息管理专业学生自荐信格式
2013/09/22 职场文书
二年级体育教学反思
2014/01/15 职场文书
小学语文国培感言
2014/03/04 职场文书
综治宣传月活动总结
2014/04/28 职场文书
化工操作工岗位职责
2014/04/29 职场文书
2014党员整改措施思想汇报
2014/10/07 职场文书
2014年图书室工作总结
2014/12/09 职场文书
一行Python命令实现批量加水印
2022/04/07 Python