当前位置: 首页 > 编程日记 > 正文

php的数组排序方法,PHP数组排序函数

在使用 PHP 进行编程时,有时需要对数组进行排序,通常我们使用的对数组进行排序的方法有冒泡排序、快速排序等等。

我们除了可以自定义一些数组排序的函数外,PHP 还内置了多种对数组进行排序的函数,这些函数允许用户在数组内部对元素进行排列。通过排序可以对数据进行合理的管理,提高程序的执行效率。下面我们就来介绍一下 PHP 中的数组排序函数。

PHP 中常用的数组排序函数如下表所示:

函数

说明

sort()

对数组元素进行升序排序(从小到大)。

rsort()

对数组元素进行降序排序(从大到小)。

asort()

对数组元素进行升序排序(从小到大),并保持索引关系。

arsort()

对数组元素进行降序排序(从大到小),并保持索引关系。

ksort()

按照数组的键值对数组进行升序排序(从小到大),并保持索引关系。

krsort()

按照数组的键值对数组进行降序排序(从大到小),并保持索引关系。

1、sort() 函数

sort() 函数可以将数组进行升序排序(从小到大,由低到高),语法格式如下:

sort($array [, $sort_flags = SORT_REGULAR])

参数说明如下:

$array:为要排序的数组。

$sort_flags:为可选参数,默认为“SORT_REGULAR”,用来定义函数排序的模式。$sort_flags 可以设置为下面这些值:

0 或 SORT_REGULAR:正常比较数组元素,不改变其类型(默认值);

1 或 SORT_NUMERIC:将数组元素当作数字来比较;

2 或 SORT_STRING:将数组元素当作字符串来比较

3 或 SORT_LOCALE_STRING:根据当前的区域(locale)设置来把数组元素当作字符串比较,可以用 setlocale() 来改变。

4 或 SORT_NATURAL:和 natsort() 类似对每个数组元素以“自然的顺序”对字符串进行排序,是 PHP5.4.0 中新增的。

5 或 SORT_FLAG_CASE:能够与 SORT_STRING 或 SORT_NATURAL 合并(OR 位运算),不区分大小写排序字符串。

提示:sort() 函数会删除 $array 中原有的键名并为其赋与新的键名,而不是仅仅将数组元素重新排序。函数执行成功时会返回 TRUE,失败时会返回 FALSE。

【示例】使用 sort() 函数对数组进行排序。

$num = array(10, 23, 5, 12, 84, 16);

echo '

';

sort($num);

print_r($num);

$language = array(

'a' =>'http://c.biancheng.net/php/',

'b' =>'PHP',

'c' =>'Java',

'd' =>'Golang',

'e' =>'Python'

);

sort($language, SORT_FLAG_CASE);

print_r($language);

?>

运行结果如下:

Array

(

[0] => 5

[1] => 10

[2] => 12

[3] => 16

[4] => 23

[5] => 84

)

Array

(

[0] => Golang

[1] => Java

[2] => PHP

[3] => Python

[4] => http://c.biancheng.net/php/

)

需要注意的是,在对混合类型的数组进行排序时需要特别小心,sort() 函数很可能会返回一个不可预知的结果。

2、rsort() 函数

rsort() 函数同样可以对数组进行升序排序(从小到大,由低到高),但它不会修改原数组中的键名。可以将 rsort() 函数看作是 sort() 函数的增强版。

rsort() 函数主要用于那些特别重视值和索引之间关系的数组,其语法格式如下:

asort($array [, $sort_flags = SORT_REGULAR])

参数说明如下:

$array:为要排序的数组。

$sort_flags:为可选参数,用来定义函数排序的模式,默认值为“SORT_REGULAR”。$sort_flags 的取值与 sort() 函数中的 $sort_flags 参数相同。

【示例】使用 asort() 函数对数组进行排序。

$language = array(

'a' =>'http://c.biancheng.net/php/',

'b' =>'PHP',

'c' =>'Java',

'd' =>'Golang',

'e' =>'Python'

);

echo '

';

asort($language, SORT_FLAG_CASE);

print_r($language);

?>

运行结果如下:

Array

(

[d] => Golang

[c] => Java

[b] => PHP

[e] => Python

[a] => http://c.biancheng.net/php/

)

3、rsort() 函数

rsort() 函数函数可以对数组进行降序排序(从大到小,由高到低),与 sort() 函数类似 rsort() 函数也会删除数组原有的键名,并为其重新赋值。其语法格式如下:

rsort($array [, $sort_flags = SORT_REGULAR])

参数说明如下:

$array:为要排序的数组。

$sort_flags:为可选参数,用来定义函数排序的模式,默认值为“SORT_REGULAR”。$sort_flags 的取值与 sort() 函数中的 $sort_flags 参数相同。

【示例】使用 rsort() 函数对数组进行排序。

$language = array(

'a' =>'Linux',

'b' =>'PHP',

'c' =>'Java',

'd' =>'Golang',

'e' =>'Python'

);

echo '

';

rsort($language, 0);

print_r($language);

?>

运行结果如下:

Array

(

[0] => Python

[1] => PHP

[2] => Linux

[3] => Java

[4] => Golang

)

4、arsort() 函数

arsort() 函数可以对数组进行降序排序(从大到小,由高到低),但它不会修改原数组中的键名。与 rsort() 函数类似 arsort() 函数同样适用于那些特别重视值和索引之间关系的数组,其语法格式如下:

arsort($array [, $sort_flags = SORT_REGULAR])

参数说明如下:

$array:为要排序的数组。

$sort_flags:为可选参数,用来定义函数排序的模式,默认值为“SORT_REGULAR”。$sort_flags 的取值与 sort() 函数中的 $sort_flags 参数相同。

【示例】使用 arsort() 函数对数组进行排序。

$language = array(

'a' =>'Linux',

'b' =>'PHP',

'c' =>'Java',

'd' =>'Golang',

'e' =>'Python'

);

echo '

';

arsort($language, 0);

print_r($language);

?>

运行结果如下:

Array

(

[e] => Python

[b] => PHP

[a] => Linux

[c] => Java

[d] => Golang

)

5、ksort() 函数

ksort() 函数可以根据数组的键值对数组进行升序排序(从小到大,由低到高),不会修改数组的键名。该函数主要用于关联数组,语法格式如下:

ksort($array [, $sort_flags = SORT_REGULAR])

参数说明如下:

$array:为要排序的数组。

$sort_flags:为可选参数,用来定义函数排序的模式,默认值为“SORT_REGULAR”。$sort_flags 的取值与 sort() 函数中的 $sort_flags 参数相同。

【示例】使用 ksort() 函数对数组进行排序。

$info = array(

'id' => 1234,

'url' => 'http://c.biancheng.net/php/',

'language' => 'PHP',

'article' => '数组排序函数'

);

echo '

';

ksort($info, 0);

print_r($info);

?>

运行结果如下:

Array

(

[article] => 数组排序函数

[id] => 1234

[language] => PHP

[url] => http://c.biancheng.net/php/

)

6、krsort() 函数

krsort() 函数可以根据数组的键值对数组进行降序排序(从大到小,由高到低),不会修改数组的键名。该函数主要用于关联数组,语法格式如下:

krsort($array [, $sort_flags = SORT_REGULAR])

参数说明如下:

$array:为要排序的数组。

$sort_flags:为可选参数,用来定义函数排序的模式,默认值为“SORT_REGULAR”。$sort_flags 的取值与 sort() 函数中的 $sort_flags 参数相同。

【示例】使用 krsort() 函数对数组进行排序。

$info = array(

'id' => 1234,

'url' => 'http://c.biancheng.net/php/',

'language' => 'PHP',

'article' => '数组排序函数'

);

echo '

';

krsort($info, 0);

print_r($info);

?>

运行结果如下:

Array

(

[url] => http://c.biancheng.net/php/

[language] => PHP

[id] => 1234

[article] => 数组排序函数

)

相关文章:

介绍并扩展Fitnesse的测试模块化机制:Scenario

2019独角兽企业重金招聘Python工程师标准>>> 首先普及一下概念,什么是Fitnesse,听一听.NET版Cucumber的创始人Aslak Hellesy谈Fitnesse与Cucumber对比: FIT/Fitnesse和Cucumber都执行高级语言编写的验收测试。FIT仅识别HTML&#…

cmake, This may result in binaries being created in the wrong place

现象: CMake Error: The current CMakeCache.txt directory /home/etouch/minigui-64/minigui/libmgeff-1.0.0/CMakeCache.txt is different than the directory /home/weiym/devel/minigui/rel-3-0/libmgeff-1.0 where CMakeCache.txt was created. This may resul…

GDB调试技巧

1. GDB 调试程序 1.Run a program without any argument. gdb program 2. Run a program with arguments gdb --args program arg1 arg2 ... argN or gdb program (gdb) r arg1 arg2 ... argN 3. start with both an executable program and a core file specified gdb…

php 进程管理,php如何管理进程

进程管理-防止进程成为僵尸进程创建好了进程,那么怎么对子进程进行管理呢?使用信号,对子进程的管理,一般有两种情况:(推荐学习:PHP编程从入门到精通)posix_kill():此函数并不能顾名思义&#xf…

Linux分区的认识

有时候为了便于管理硬盘或允许在一块硬盘上使用多个文件系统或操作系统,需要对硬盘进行分区操作。硬盘的分区分为3种:主分区、扩展分区、逻辑分区。通常因为计算机BIOS和MBR的限制,一块硬盘最多只能有4个分区,其中一个主分区可用扩…

求小数的小数点的第n位是什么

链接:https://ac.nowcoder.com/acm/contest/548/B来源:牛客网 时间限制:C/C 1秒,其他语言2秒空间限制:C/C 262144K,其他语言524288K64bit IO Format: %lld题目描述 立华奏在学习初中数学的时候遇到了这样一…

Git 简介1-常用术语

常用术语 1. origin origin是对项目最初克隆(clone)的远程仓库的缩写。 更准确地说,origin 是用来代替原始(original)远程仓库的URL, 从而使在git 命令中使用原始仓库更加容易。 2. master master 是分支的命名约定。 从远程服务器克隆后,生成的本…

要过一遍的博客列表

面向GC的Java编程 (finish) java程序员也应该知道的系统知识系列 (finish) 一致性哈希算法及其在分布式系统中的应用(finish) NoSQL数据库的分布式算法 深入理解java内存模型系列文章 转载于:https://www.cnblogs.com/dongxiao-yang/p/4767179.html

b站弹幕 xml php 乱码,B站弹幕Python爬行XML响应中的代码转换问题,python,之,取,b,xml,时,转码...

在学习过程中,可以发现,对于xml类型的响应,了解到的方式lxml和bs解析器。frombs4importBeautifulSoup #主要使用BeautifulSoup类事实上可以认为:HTML文档和标签树,BeautifulSoup类是等价的Beautiful Soup库解析器&…

java.io包和杯子测楼

1 java.io 字符流:Reader 字节流:InputStream 2 杯子测楼 一种杯子,若在第N层被摔破,则在任何比N高的楼层均会破,若在第M层不破,则在任何比M低的楼层均不会破,给你两个这样的杯子,让…

JUnit测试类完成后事务是默认 回滚的。只能查询数据,不能增删改。

JUnit测试类完成后事务是默认 回滚的。只能查询数据,不能增删改。 在测试类或者测试方法上面加上注解 Rollback(false) 表示事物不回滚,这样数据就可以提交到数据库中了。 转载于:https://www.cnblogs.com/zhangcheng1/p/11156389.html

gcc 编译选项

下载gcc文档,第三章有详细的build options的介绍。 最近我用到2个关键的option 来定位问题,简单介绍一下: 1. -E: 只是进行预编译,不会编译和link。用于检查宏在代码中的展开是否符合预期; 2.--verbose: 开启verbos…

ionic中的后退方法

1)$ionicHistory.goBack();2)$ionicNavBarDelegate.back(); 个人感觉: 1)$ionicHistory.goBack()会按照html历史来后退 2)$ionicNavBarDelegate.back()会按照ion-nav-view的层级来跳转;但是,调用…

php 生成非对称密钥,php实现非对称加密

使用非对称加密主要是借助openssl的公钥和私钥,用公钥加密私钥解密,或者私钥加密公钥解密。1.安装openssl和PHP的openssl扩展2.生成私钥:openssl genrsa用于生成rsa私钥文件,生成是可以指定私钥长度和密码保护1. openssl genrsa -…

HDU 4951 Multiplication table(2014 Multi-University Training Contest 8)

思路 如果进制为p 那么当x<p时 &#xff08;p-1&#xff09;*&#xff08;p-x&#xff09;(p-&#xff08;x1&#xff09;) *p x 因为x<p 所以没有进位 所以高位上的数字为 p-&#xff08;x1&#xff09;。 根据上面所述。 只要我们能找出 p-1 那么我们…

H3C 静态默认路由配置

转载于:https://www.cnblogs.com/fanweisheng/p/11156783.html

malloc为什么会报错:memory corruption

最近遇到一个问题&#xff0c;很有意思&#xff0c;在此记录下&#xff0c;以备后续参考。 程序运行异常&#xff0c;报错&#xff1a;malloc: memory corruption. 用gdb 调试程序&#xff0c;bt 如下&#xff0c;程序在申请344 bytes内存时失败。 疑问&#xff1a;344bytes内…

php 静态类内存,php面向对象中static静态属性与方法的内存位置分析

本文实例分析了php面向对象中static静态属性与方法的内存位置。分享给大家供大家参考。具体如下&#xff1a;static静态属性的内存位置——>类&#xff0c;而不是对象。下面做测试来证明一下header("content-type:text/html;charsetutf-8");class Human{static pu…

Android中实现为TextView添加多个可点击的文本

这篇文章主要介绍了Android中实现为TextView添加多个可点击的文本,可实现类似Android社交软件显示点赞用户并通过用户名称进入该用户主页的功能,是非常实用的技巧,需要的朋友可以参考下。具体如下&#xff1a; 很多时候我们在使用社交软件的过程中多多少少会为别人的帖子点赞&a…

Set和存储顺序深入探讨、SortedSet排序的示例

2019独角兽企业重金招聘Python工程师标准>>> Set和存储顺序深入探讨、SortedSet排序的示例 package org.rui.collection2.set;import java.util.HashSet; import java.util.LinkedHashSet; import java.util.Set; import java.util.TreeSet;//TypesForSets.java /**…

设计模式七大原则(C++描述)

前言 最近在学习一些基本的设计模式,发现很多博客都是写了六个原则,但我认为有7个原则,并且我认为在编码中思想还是挺重要,所以写下一篇博客来总结下 之后有机会会写下一些设计模式的博客(咕咕咕........ 设计模式的七大原则 1.单一职责原则 2.开放-封闭原则 3.依赖倒置原则 4.…

gdb高级调试技巧

1. 反向调试 gdb支持程序反向执行。 record 让程序开始记录反向调试所必要的信息 rn : reverse next rc: reverse continue &#xff0c;Continue program being debugged but run it in reverse record stop: 停止记录 2. 格式化&#xff08;pretty print&#xff09;打…

php代码实现关键词搜索,PHP代码实现百度统计关键词及来路推送

搜索热词勾起我搞这个的兴趣是因为有个卖软件的&#xff0c;老是向我的百度统计后台推送引流软件广告。搜索后发现早就有人做过这方面的研究&#xff0c;然而随着统计代码版本升级&#xff0c;部分功能暂时还未解决。今天这篇 PHP 代码实现提交虚假数据给百度统计就教大家&…

linux跨主机复制文件

scp -r billing10.200.171.111:/billdata2/user/yanhm/redis/* /newboss/billing/user/aabb 其中&#xff1a; 10.200.171.111&#xff1a;远程主机 billing&#xff1a;远程主机的用户名 /billdata2/user/yanhm/redis/&#xff1a;要复制远程主机的文件路径 /newboss/billing/…

delphi使用outputdebugstring调试程序和写系统日志

delphi使用outputdebugstring调试程序和写系统日志 procedure TForm1.btn1Click(Sender: TObject); beginOutputDebugString(dddddd);OutputDebugString(11); end;procedure TForm1.btn2Click(Sender: TObject); varEvtSrcHand: THandle;EvtMsg: String; p:Pointer; i:integer;…

一个下载Windows镜像的地址

https://www.52pojie.cn/thread-633128-1-1.html转载于:https://www.cnblogs.com/blogs-jch/p/11163849.html

perf + 火焰图分析程序性能

From: https://www.cnblogs.com/happyliu/p/6142929.html 1、perf命令简要介绍 性能调优时&#xff0c;我们通常需要分析查找到程序百分比高的热点代码片段&#xff0c;这便需要使用 perf record 记录单个函数级别的统计信息&#xff0c;并使用 perf report 来显示统计结果&a…

jquery 设置css样式

$("#61dh a").css(color, 多个样式属性 var divcss {background: #EEE,width: 478px,margin: 10px 0 0,padding: 5px 10px,border: 1px solid #CCC};$("#result").css(divcss);查看某个元素的css属性值。 $("#61dh a").css("color"…

php改7z,PHP的7z扩展名? - php

我找不到一个&#xff0c;也不知道PHP Compression and Archive Extensions中的任何一个是否可以工作。您认为我可以使用compression stream从7z文件读取数据吗&#xff1f;更新7z forums对php扩展有很多要求参考方案7z文件格式可以使用各种compression algorithms&#xff0c;…

Classloader内存泄露

2019独角兽企业重金招聘Python工程师标准>>> 最近遇到了这个问题&#xff0c;在修改了-Xmx后有时仍然会出现&#xff0c;下文分析的很有启发&#xff0c;看了下文重新分析我的应用&#xff0c;在项目中我使用了spring mvc作为控制层&#xff0c;由于使用到了微信公众…