解析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的开发框架的现状和展望
Mar 16 PHP
实用函数9
Nov 08 PHP
php面向对象全攻略 (十四) php5接口技术
Sep 30 PHP
成为好程序员必须避免的5个坏习惯
Jul 04 PHP
PHP中常用的输出函数总结
Sep 22 PHP
PHP中创建图像并绘制文字的例子
Nov 19 PHP
PHP使用glob函数遍历目录或文件夹的方法
Dec 16 PHP
PHP+Ajax无刷新带进度条图片上传示例
Feb 08 PHP
PHP中overload与override的区别
Feb 13 PHP
修改yii2.0用户登录使用的user表为其它的表实现方法(推荐)
Aug 01 PHP
php 广告点击统计代码(php+mysql)
Feb 21 PHP
PHP数组对象与Json转换操作实例分析
Oct 22 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
Yii2增加验证码步骤详解
2016/04/25 PHP
PHP实现的迪科斯彻(Dijkstra)最短路径算法实例
2017/09/16 PHP
PHP开发中解决并发问题的几种实现方法分析
2017/11/13 PHP
实例讲解通过​PHP创建数据库
2019/01/20 PHP
javascript contains和compareDocumentPosition 方法来确定是否HTML节点间的关系
2010/02/04 Javascript
用jquery实现等比例缩放图片效果插件
2010/07/24 Javascript
JQuery学习笔记 nt-child的使用
2011/01/17 Javascript
原生js实现给指定元素的后面追加内容
2013/04/10 Javascript
JQuery页面图片切换和新闻列表滚动效果的具体实现
2013/09/26 Javascript
如何改进javascript代码的性能
2015/04/02 Javascript
JS实现左右拖动改变内容显示区域大小的方法
2015/10/13 Javascript
jQuery给元素添加样式的方法详解
2015/12/30 Javascript
JQuery实现网页右侧随动广告特效
2016/01/17 Javascript
深入学习 JavaScript中的函数调用
2017/03/23 Javascript
vue 做移动端微信公众号采坑经验记录
2018/04/26 Javascript
解决vue中使用proxy配置不同端口和ip接口问题
2019/08/14 Javascript
JS操作Fckeditor的一些常用方法(获取、插入等)
2020/02/19 Javascript
js对象简介与基本用法示例
2020/03/13 Javascript
Windows中安装使用Virtualenv来创建独立Python环境
2016/05/31 Python
python 实现交换两个列表元素的位置示例
2019/06/26 Python
pytorch 固定部分参数训练的方法
2019/08/17 Python
pygame用blit()实现动画效果的示例代码
2020/05/28 Python
详解Selenium-webdriver绕开反爬虫机制的4种方法
2020/10/28 Python
美国Rue La La闪购网站:奢侈品、中高档品牌限时折扣
2016/10/19 全球购物
澳大利亚领先的在线葡萄酒零售商:Get Wines Direct
2018/03/27 全球购物
Desigual美国官方网站:西班牙服装品牌
2019/03/29 全球购物
Crocs欧洲官网:Crocs Europe
2020/01/14 全球购物
大型活动策划方案
2014/01/12 职场文书
鲜花方阵解说词
2014/02/13 职场文书
职称评定自我鉴定
2014/03/18 职场文书
《庐山的云雾》教学反思
2014/04/22 职场文书
2014幼儿教师个人工作总结
2014/12/03 职场文书
妈妈别哭观后感
2015/06/08 职场文书
SpringBoot 集成Redis 过程
2021/06/02 Redis
利用python实时刷新基金估值(摸鱼小工具)
2021/09/15 Python
解决springboot druid数据库连接失败后一直重连的方法
2022/04/19 Java/Android