解析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中的内存管理问题
Aug 31 PHP
PHP仿盗链代码
Jun 03 PHP
Smarty的配置与高级缓存技术分享
Jun 05 PHP
php中FTP函数ftp_connect、ftp_login与ftp_chmod用法
Nov 18 PHP
php结合正则批量抓取网页中邮箱地址
May 19 PHP
php图片水印添加、压缩、剪切的封装类实现
Apr 18 PHP
PHP获取网页所有连接的方法(附demo源码下载)
Mar 30 PHP
php数据结构之顺序链表与链式线性表示例
Jan 22 PHP
php中curl和soap方式请求服务超时问题的解决
Jun 11 PHP
PHP count()函数讲解
Feb 03 PHP
Laravel如何创建服务器提供者实例代码
Apr 15 PHP
php实现的简单多进程服务器类完整示例
Feb 01 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
咖啡磨器 如何选购一台适合家用的意式磨豆机
2021/03/05 新手入门
用PHP进行MySQL删除记录操作代码
2008/06/07 PHP
克隆一个新项目的快捷方式
2013/04/10 PHP
解析PHP实现多进程并行执行脚本
2013/06/18 PHP
解析php函数method_exists()与is_callable()的区别
2013/06/21 PHP
php实现mysql备份恢复分卷处理的方法
2014/12/26 PHP
php绘图之生成饼状图的方法
2015/01/24 PHP
laravel 5 实现模板主题功能
2015/03/02 PHP
PHP基于迭代实现文件夹复制、删除、查看大小等操作的方法
2017/08/11 PHP
PHP有序表查找之二分查找(折半查找)算法示例
2018/02/09 PHP
PHP array_shift()用法实例分析
2019/01/07 PHP
Laravel框架实现文件上传的方法分析
2019/09/29 PHP
PHP 图片合成、仿微信群头像的方法示例
2019/10/25 PHP
JavaScript使用RegExp进行正则匹配的方法
2015/07/11 Javascript
javascript时间戳和日期字符串相互转换代码(超简单)
2016/06/22 Javascript
js数组常用操作方法小结(增加,删除,合并,分割等)
2016/08/02 Javascript
jQuery ajaxForm()的应用
2016/10/14 Javascript
JS判断两个对象内容是否相等的方法示例
2017/04/10 Javascript
Vue.js组件间的循环引用方法示例
2017/12/27 Javascript
Angular实现下拉框模糊查询功能示例
2018/01/03 Javascript
js逆向解密之网络爬虫
2019/05/30 Javascript
Python序列循环移位的3种方法推荐
2018/04/09 Python
python保存文件方法小结
2018/07/27 Python
使用Python制作自动推送微信消息提醒的备忘录功能
2018/09/06 Python
python 搭建简单的http server,可直接post文件的实例
2019/01/03 Python
对python读取CT医学图像的实例详解
2019/01/24 Python
Python远程方法调用实现过程解析
2020/07/28 Python
python使用selenium爬虫知乎的方法示例
2020/10/28 Python
奢华时尚的创新平台:Baltini
2020/10/03 全球购物
PHP面试题附答案
2015/11/28 面试题
机电专业毕业生推荐信
2013/11/10 职场文书
承办会议欢迎词
2014/01/17 职场文书
增值税发票丢失证明
2015/06/19 职场文书
vue前端工程的搭建
2021/03/31 Vue.js
eval(cmd)与eval($cmd)的区别与联系
2021/07/07 PHP
Nginx实现会话保持的两种方式
2022/03/18 Servers