解析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 相关文章推荐
PHP5 面向对象程序设计
Feb 13 PHP
JS与PHP向函数传递可变参数的区别实例代码
May 18 PHP
php加水印的代码(支持半透明透明打水印,支持png透明背景)
Jan 17 PHP
关于PHP递归算法和应用方法介绍
Apr 15 PHP
php导出csv数据在浏览器中输出提供下载或保存到文件的示例
Apr 24 PHP
PHP限制HTML内容中图片必须是本站的方法
Jun 16 PHP
Laravel 5.3 学习笔记之 安装
Aug 28 PHP
PHP实现根据数组的值进行分组的方法
Apr 20 PHP
PHP中OpenSSL加密问题整理
Dec 14 PHP
PHP经典设计模式之依赖注入定义与用法详解
May 21 PHP
解决laravel(5.5)访问public报错的问题
Oct 12 PHP
用php实现分页效果的示例代码
Dec 10 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模板技术[转]
2007/01/04 PHP
mysql_num_rows VS COUNT 效率问题分析
2011/04/23 PHP
关于PHP的curl开启问题探讨
2014/04/08 PHP
利用PHP判断是否是连乘数字串的方法示例
2017/07/03 PHP
php实现将数组或对象写入到文件的方法小结【三种方法】
2020/04/22 PHP
onbeforeunload与onunload事件异同点总结
2013/06/24 Javascript
优化javascript的执行效率一些方法总结
2013/12/25 Javascript
JavaScript中字面量与函数的基本使用知识
2015/10/20 Javascript
BootStrap使用popover插件实现鼠标经过显示并保持显示框
2016/06/23 Javascript
浅谈JavaScript事件绑定的常用方法及其优缺点分析
2016/11/01 Javascript
javascript创建对象的3种方法
2016/11/02 Javascript
基于jQuery实现的Ajax 验证用户名唯一性实例代码
2017/06/28 jQuery
利用babel将es6语法转es5的简单示例
2017/12/01 Javascript
vue引用外部JS的两种种方法
2020/01/28 Javascript
一篇文章带你从零快速上手Rollup
2020/09/07 Javascript
[00:43]DOTA2小紫本全民票选福利PA至宝全方位展示
2014/11/25 DOTA
[01:07:15]DOTA2-DPC中国联赛 正赛 DLG vs XG BO3 第二场 1月25日
2021/03/11 DOTA
Python3中使用urllib的方法详解(header,代理,超时,认证,异常处理)
2016/09/21 Python
在Python运行时动态查看进程内部信息的方法
2019/02/22 Python
python监控进程状态,记录重启时间及进程号的实例
2019/07/15 Python
Python assert语句的简单使用示例
2019/07/28 Python
python 实现在无序数组中找到中位数方法
2020/03/03 Python
Python基于pandas绘制散点图矩阵代码实例
2020/06/04 Python
解决html5中的video标签ios系统中无法播放使用的问题
2020/08/10 HTML / CSS
金牌葡萄酒俱乐部:Gold Medal Wine Club
2017/11/02 全球购物
Tenstickers法国:墙贴和装饰贴纸
2019/08/26 全球购物
中国京东和泰国中央集团合资的网站:JD CENTRAL
2020/08/22 全球购物
精彩的推荐信范文
2013/11/26 职场文书
保险专业求职信
2014/07/07 职场文书
房地产经营管理专业自荐信
2014/09/02 职场文书
党员对照检查材料思想汇报(党的群众路线)
2014/09/24 职场文书
2014县政府领导班子三严三实对照检查材料思想汇报
2014/09/26 职场文书
民主评议政风行风活动心得体会
2014/10/29 职场文书
职工宿舍管理制度
2015/08/05 职场文书
关于Python OS模块常用文件/目录函数详解
2021/07/01 Python
一次项目中Thinkphp绕过禁用函数的实战记录
2021/11/17 PHP