数组排序函数-php数组函数(一)
2024-08-30 13:40:40
数组排序,共13个
- 函数中有
u
的,能自定义比较函数;有k
的,按照键来排序;有r
(reverse)的,倒序;有a(association)
的,一定是键值关联,除了rsort()
usort()
sort()
shuffle()
,其他没有a
的都是键值关联,array_multisort()
键值关联的保持,数字类型的不保持。 - 下列的所有排序函数都是直接作用于数组本身, 而不是返回一个新的有序的数组。
- 以下函数对于数组中相等的元素,它们在排序后的顺序是未定义的。 (也即相等元素之间的顺序是不稳定的,即具有相同值的元素每次排序的结果都是不确定(关联数组))。php7
asort
arsort
uasort
已实现稳定排序,php5稳定排序:http://php.net/manual/zh/func... - 在对含有混合类型值的数组排序时要小心,因为 sort() 可能会产生不可预知的结果。
1.array_multisort
- 可以用来一次对多个数组进行排序,或者根据某一维或多维对多维数组进行排序。
bool array_multisort ( array &$array1 [, mixed $array1_sort_order = SORT_ASC [, mixed $array1_sort_flags = SORT_REGULAR [, mixed $... ]]] )
排序类型标志:
- SORT_REGULAR (默认)- 将项目按照通常方法比较(不修改类型,区分大小写,大写字母会排在小写字母之前)
- SORT_NUMERIC - 按照数字大小比较
- SORT_STRING - 按照字符串比较(区分大小写)
- SORT_LOCALE_STRING - 根据当前的本地化设置,按照字符串比较。 它会使用 locale 信息,可以通过 setlocale() 修改此信息。
- SORT_NATURAL - 以字符串的"自然排序",类似 natsort()
- SORT_FLAG_CASE - 可以组合 (按位或 OR) SORT_STRING 或者 SORT_NATURAL 大小写不敏感的方式排序字符串。
- 1.1 如果有多个数组参数时,
$array2
会根据$array1
的结果排序,像MySQL的group by
- 1.2 不区分大小写的排序:
$array = array('Alpha', 'atomic', 'Beta', 'bank');
$array_lowercase = array_map('strtolower', $array); // 先复制一个转为小写数组
array_multisort($array_lowercase, SORT_ASC, SORT_STRING, $array); // 先对小写数组排序,再排序原数组
print_r($array);
- 1.3 对数据库结果进行排序
function array_orderby()
{
$args = func_get_args();
$data = array_shift($args);
foreach ($args as $n => $field) {
if (is_string($field)) {
$tmp = array();
foreach ($data as $key => $row)
$tmp[$key] = $row[$field];
$args[$n] = $tmp;
}
}
$args[] = &$data;
call_user_func_array('array_multisort', $args);
return array_pop($args);
}
2.sort
- 删除原有的键名对数组排序(顺序)
bool sort ( array &$array [, int $sort_flags = SORT_REGULAR ] )
sort($fruits, SORT_NATURAL | SORT_FLAG_CASE);
排序结果和natcasesort()
一样。
3.rsort
- 对数组逆向排序
bool rsort ( array &$array [, int $sort_flags = SORT_REGULAR ] )
4.asort
- 保持键值关联(association)。主要用于对那些单元顺序很重要的结合数组进行排序。
bool asort ( array &$array [, int $sort_flags = SORT_REGULAR ] )
5.arsort
- 倒序并保持索引关系(association,reverse)
bool arsort ( array &$array [, int $sort_flags = SORT_REGULAR ] )
6.ksort
- 按
键名
排序
bool ksort ( array &$array [, int $sort_flags = SORT_REGULAR ] )
7.krsort
- 按
键名
倒序
bool krsort ( array &$array [, int $sort_flags = SORT_REGULAR ] )
8.usort
- 使用用户自定义的比较函数对数组中的
值
进行排序,要排序的数组需要用一种不寻常的标准进行排序,那么应该使用此函数。
bool usort ( array &$array , callable $value_compare_func )
$value_compare_func( mixed $a, mixed $b )
在$a
小于,等于或大于$b
时,该比较函数必须相应地返回一个小于,等于或大于 0 的整数。usort($a, array("TestObj", "cmp_obj"))
对象属性排序- 在类中调用:
uasort($array, array($this,"value_compare_func"))
9.uasort
- 使用用户自定义的比较函数对数组中的值进行排序并保持索引关联
bool uasort ( array &$array , callable $value_compare_func )
10.uksort
- 使用用户自定义的比较函数对数组中的
键名
进行排序
bool uksort ( array &$array , callable $key_compare_func )
11.natcasesort
- 不区分大小写字母的自然排序(排完字母再排数字),保持键值关联
bool natcasesort ( array &$array )
12.natsort
- 用“自然排序”算法对数组排序,保持键值关联
bool natsort ( array &$array )
13.shuffle
- 本函数打乱(随机排列单元的顺序)一个数组。键值不关联
bool shuffle ( array &$array )
原文地址:https://segmentfault.com/a/1190000015726647
最新文章
- C#多态“说来也说”——逻辑层BLL中的多态使用
- Oracle常用函数
- 关于在线预览word,excel,ppt,pdf的需求处理方法。
- web前端开发工程师,你了解吗?
- 【迁移】—Entity Framework实例详解
- AMH4.2 虚拟主机面板Tengine版本
- c - 字符串长度.
- WCF 基于Cookie的登录验证回传问题的解决
- ASP.NET动态引用WebService接口
- 学习如何看懂SQL Server执行计划——基本知识篇
- 三栏布局,div左右盒子是定宽,中间是自适应
- python学习之路前端-CSS
- [vue开发记录]float label输入框
- queue deque
- 使用 Apache Web 配置多个站点
- Scala集合笔记
- mysql的数据类型- 特别是表示日期/时间的数据类型: 参考: http://www.cnblogs.com/bukudekong/archive/2011/06/27/2091590.html
- PAT甲题题解-1031. Hello World for U (20)-字符串处理,水
- puppeteer (Nodejs版selenium )快速入门
- 解题报告:hdu1248寒冰王座 - 完全背包模板
热门文章
- MySQL基础 -- 关系代数
- 基于ssh框架web示例
- 第四章之S5PV210内存初始化
- Caused by: java.lang.ClassNotFoundException: org.apache.log4j.Logger
- [Usaco2005]Part Acquisition
- 【洛谷4769】[NOI2018] 冒泡排序(动态规划_组合数学)
- stack(数组模拟) POJ 2559 Largest Rectangle in a Histogram
- UWP Windows10开发获取设备位置(经纬度)
- Android开发中实现桌面小部件
- 短视频SDK用于旅游行业