PHP 数组排序方法总结
sort:本函数为 array 中的单元赋予新的键名。这将删除原有的键名而不仅是重新排序。
rsort:本函数对数组进行逆向排序(最高到最低)。 删除原有的键名而不仅是重新排序。
asort:对数组进行排序并保持索引关系
arsort:对数组进行逆向排序并保持索引关系
ksort:对数组按照键名排序,保留键名到数据的关联
krsort:对数组按照键名逆向排序,保留键名到数据的关联
natsort:对字母数字字符串进行排序并保持原有键/值的关联
natcasesort:同natsort排序算法,但不区分大小写字母排序
PHP 数组排序(sort)
数字索引数组排序:
函数:sort(array, [sort type])
说明:sort()函数按升序对指定数组(第一个参数)进行排序。
sort函数第二参数作用为指定排序类型,是可选参数,可能的值为:
SORT_REGULAR: 默认值,不改变类型进行排序;
SORT_NUMERIC: 把值作为数字进行排序;
SORT_STRING: 把值作为字符串进行排序;
如数组中有4和”37″,按数字排序,4小于”37″;按字符串排序,4大于”37″;
$a = array(4,"37",3,100,0,-5);
sort($a);
for ($i=0; $i<6; ++$i){
echo $a[$i]." ";
}
echo "<br />";
sort($a,SORT_STRING);
for ($i=0; $i<6; ++$i){
echo $a[$i]." ";
}
echo "<br />";
?>
输出结果:
-5 0 3 4 37 100
-5 0 100 3 37 4
降序排序:rsort(array, [sort type])
参数用法与sort函数相同。
关联数组排序:
函数:asort(array, [sort type])
说明:根据关联数组的元素值进行升序排序。参数使用见上面的sort函数。
函数:ksort(array, [sort type])
说明:根据关联数组的关键字进行升序排序。参数使用见上面的sort函数。
$a = array(
"good" => "bad",
"right" => "wrong",
"boy" => "girl");
echo "value sort<br />";
asort($a);
foreach($a as $key => $value){
echo "$key : $value<br />";
}
echo "<br />key sort<br />";
ksort($a);
foreach($a as $key => $value){
echo "$key : $value<br />";
}
?>
输出结果:
value sort
good : bad
boy : girl
right : wrong
key sort
boy : girl
good : bad
right : wrong
降序排序:
arsort(array, [sort type]) 与 asort对应
krsort(array, [sort type]) 与 ksort对应
快速创建数组的函数range()
比如range()函数可以快速创建从1到9的数字数组:
$numbers=range(1,9);
echo $numbers[1];
?>
当然,使用range(9,1)则创建了9到1的数字数组。同时,range()还可以创建从a到z 的字符数组:
$numbers=range(a,z);
foreach ($numbers as $mychrs)
echo $mychrs." ";
?>
使用字符数组时注意大小写,比如range(A,z)和range(a,Z)是不一样的。range()函数还具有第三个参数,该参数的作用是设定步长,比如range(1,9,3)创建的数组元素是:1、4、7。常见PHP数组排序一般数组中的各元素均以字符或数字表现的,所以可对数组元素进行升序排列,该功能函数为sort()。比如:
$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)。
PHP 数组排序方法总结的更多相关文章
- CSharpGL(36)通用的非托管数组排序方法
CSharpGL(36)通用的非托管数组排序方法 如果OpenGL要渲染半透明物体,一个方法是根据顶点到窗口的距离排序,按照从远到近的顺序依次渲染.所以本篇介绍对 UnmanagedArray< ...
- 数组排序方法(join()、reverse()、sort())
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- ***PHP 数组排序 +php二维数组排序方法(PHP比较器)
PHP - 一维数组的排序函数 在本节中,我们将学习如下 PHP 数组排序函数: sort() - 以升序对数组排序 rsort() - 以降序对数组排序 asort() - 根据值,以升序对关联数组 ...
- php二维数组排序方法(转自http://www.3lian.com/edu/2013/12-26/118882.html)
一维数组排序可以使用asort.ksort等一些方法进程排序,相对来说比较简单.二维数组的排序怎么实现呢?使用array_multisort和usort可以实现 例如像下面的数组: 代码如下: ...
- PHP指定字段的多维数组排序方法
PHP数组排序可以用array_multisort方法实现,但是如果是多维数组,并且我们要指定数组中的某个字段进行排序,那么这就需要我们自己写方法实现了. function sortArrByFiel ...
- javascript数组(1) ——sort的工作原理及其他数组排序方法
一说到数组排序,最直观的想法就是用sort啊! 请问不用使用sort方法还可以使用什么方法进行数组排序? 比如 : 快速排序法.合并排序法.冒泡排序法.选择排序法.插入排序法.布尔排序法.交互排序. ...
- php二维数组排序方法(array_multisort usort)
一维数组排序可以使用asort.ksort等一些方法进程排序,相对来说比较简单.二维数组的排序怎么实现呢?使用array_multisort和usort可以实现 例如像下面的数组: $users = ...
- php二维数组排序方法(array_multisort,usort)
一维数组排序可以使用asort.ksort等一些方法进程排序,相对来说比较简单.二维数组的排序怎么实现呢?使用array_multisort和usort可以实现 例如像下面的数组: $users = ...
- C#数组排序方法
在C#中常用的数组排序的方法有:选择排序法.冒泡排序法.插入排序法和希尔排序法等. 一.选择排序法 using System;using System.Collections.Generic;usin ...
随机推荐
- C#读写xml文件的常用方法
已知有一个XML文件(bookshop.xml)如下: <?xml version="1.0" encoding="gb2312" ?> <b ...
- 利用RBAC模型实现一个通用的权限管理系统
本文主要描述一个通用的权限系统实现思路与过程.也是对此次制作权限管理模块的总结. 制作此系统的初衷是为了让这个权限系统得以“通用”.就是生产一个web系统通过调用这个权限系统(生成的dll文件), 就 ...
- 入门级:怎么使用C#进行套接字编程(二)
入门级:怎么使用C#进行套接字编程(一) 原文地址如下: C# Server Socket program C# Client Socket program 代码环境:VS2010+Win8.1企业评 ...
- Bad version number in .class file
TY项目是用JDK1.6做的,早先在电脑上装了一个1.5的,这回就不能用了.为了能用,我就又装了一个1.6的,修改了环境变量之后,以为一切OK.开始测试,首先在Myeclipse中打开我用1.5编的一 ...
- 微软BI 之SSIS 系列 - MVP 们也不解的 Scrip Task 脚本任务中的一个 Bug
开篇介绍 前些天自己在整理 SSIS 2012 资料的时候发现了一个功能设计上的疑似Bug,在 Script Task 中是可以给只读列表中的变量赋值.我记得以前在 2008 的版本中为了弄明白这个配 ...
- 使用七牛云存储实现Android的自动更新
为了修复Bug或更新软件,我们通常需要实现自动更新,没有哪一个牛逼的人能够搞到每一个用户的机子去帮他们更新. 1.自动更新的流程 我们将了解一下自动更新的思路.既然软件要自动更新,那么它必须知道自己是 ...
- Nginx学习笔记(一) Nginx架构
Nginx架构 Nginx全程是什么? Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器. ...
- [安卓] 9、线程、VIEW、消息实现从TCP服务器获取数据动态加载显示
一.前言: 一般情况下从TCP服务器读取数据是放在一个线程里读的,但是刷新界面又不得不放在线程外面,所以需要用消息传递把线程里从TCP里获得的数据传送出来,然后根据数据对页面进行相应的刷新. 二.业务 ...
- Linux下的NFS配置(转)
http://rubyer.me/blog/1682/ 遇到的问题: 1.reason given by server: Permission denied 在服务器的/etc/export配置文件中 ...
- 样式中的url加载探疑
当一个项目多人维护,特别是接手别人的项目,而项目又在改之又改的基础上再改,我一直遵循,别人的样式我不动的原则,尽量不因为一时不察,导致整站或部分页面出现错位的现象,因些在修改样式与写样式时都是在原有的 ...