数组排序函数-php数组函数(一)
数组排序,共13个
- 函数中有
u的,能自定义比较函数;有k的,按照键来排序;有r(reverse)的,倒序;有a(association)的,一定是键值关联,除了rsort()usort()sort()shuffle(),其他没有a的都是键值关联,array_multisort()键值关联的保持,数字类型的不保持。 - 下列的所有排序函数都是直接作用于数组本身, 而不是返回一个新的有序的数组。
- 以下函数对于数组中相等的元素,它们在排序后的顺序是未定义的。 (也即相等元素之间的顺序是不稳定的,即具有相同值的元素每次排序的结果都是不确定(关联数组))。php7
asortarsortuasort已实现稳定排序,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
数组排序函数-php数组函数(一)的更多相关文章
- PHP函数积累总结(Math函数、字符串函数、数组函数)
Math函数:10个较常用标红.abs — 绝对值acos — 反余弦acosh — 反双曲余弦asin — 反正弦asinh — 反双曲正弦atan2 — 两个参数的反正切atan — 反正切ata ...
- php字符串函数和数组函数
/验证码$str="abcdefghijklmnopqrstuvwxyz0123456789";$a=substr($str,rand(0,35),1);$b=substr($st ...
- 求数组差/交集函数-php数组函数(二)
求数组差集函数 函数只检查了多维数组中的一维.可以用 array_diff($array1[0], $array2[0]) 检查更深的维度. u:自定义函数比较,a(association):同时比较 ...
- js课程 3-10 js中字符串函数数组函数和其它语言中对应函数的区别和联系是什么
js课程 3-10 js中字符串函数数组函数和其它语言中对应函数的区别和联系是什么 一.总结 一句话总结:js中是对象点方法的形式,这些方法都是对象的方法,而在php.java中却不是这样. 1.j ...
- javascript函数一共可分为五类: ·常规函数 ·数组函数 ·日期函数 ·数学函数 ·字符串函数
javascript函数一共可分为五类: ·常规函数 ·数组函数 ·日期函数 ·数学函数 ·字符串函数 1.常规函数 javascript常规函数包括以下9个 ...
- PHP 数组函数-数组排序
php数组排序函数sort ( &$arr [,fruits] ) 对数组进行从低到高排序 ,并赋予新的键名 返回boolrsort ( &$arr [,fruits] ) 对数组进行 ...
- PHP数组函数总结
array_change_key_case - 返回字符串键名全为小写或大写的数组 array_chunk - 将一个数组分割成多个 array_column - 返回数组中指定的一列 array_c ...
- php常用的数组函数
array_change_key_case -- 返回字符串键名全为小写或大写的数组 array_chunk -- 将一个数组分割成多个 array_combine -- 创建一个数组,用一个数组的 ...
- PHP基础 数组函数 的总结
<?php /** * PHP基础 数组操作函数 * * 指针函数:[类似于数据库的游标] 见例1.1 * current($arr)/pos 返回当前指针指向的元素 * key($arr) 返 ...
随机推荐
- 组件-实体-系统 Entiy-Compoent-System ECS架构整理
继承体系的问题,为什么要用ECS 面向对象的问题 当一个新的类型需要多个老类型的不同功能的时候,不能很好的继承出来 游戏开发后期会有非常多的类,很难维护 游戏中子系统很多,它们对一个对象的关注点往往互 ...
- [App Store Connect帮助]九、衡量 App 表现(1)分析和报告概述
App Store Connect 提供如下分析和报告,以衡量您 App 的表现并查看向您支付的最终付款. App 分析 通过 App Store 展示次数.产品页面查看次数.销售额.App 使用次数 ...
- (矩阵快速幂)51NOD 1242斐波那契数列的第N项
斐波那契数列的定义如下: F(0) = 0 F(1) = 1 F(n) = F(n - 1) + F(n - 2) (n >= 2) (1, 1, 2, 3, 5, 8, 13, 21, ...
- 关于数学函数中的abs——————————————杭电2057——————————————————————————
数学函数中的abs当你用abs之后括号之中的数字就转换成了int格式.可能会丢失一些数据造成误差而且还会有, 警告: #include<stdio.h> #include<ma ...
- Spark SQL概念学习系列之Spark SQL入门
前言 第1章 为什么Spark SQL? 第2章 Spark SQL运行架构 第3章 Spark SQL组件之解析 第4章 深入了解Spark SQL运行计划 第5章 测试环境之搭建 第6章 ...
- python 37条编程技巧-汇总(转载+整理)
1.原地交换两个数字 x, y =10, 20 print x, y y, x = x, y print x, y 10 20 20 10 2.链状比较操作符 n = 10 print 1 < ...
- Saas物联网共享平台实战
什么是SaaS系统: 越来越多的软件,开始采用云服务. 云服务只是一个统称,可以分成三大类. IaaS:基础设施服务,Infrastructure-as-a-service PaaS:平台服务,Pla ...
- 使用 Suricata 进行入侵监控(一个简单小例子访问百度)
前期博客 基于CentOS6.5下Suricata(一款高性能的网络IDS.IPS和网络安全监控引擎)的搭建(图文详解)(博主推荐) 1.自己编写一条规则,规则书写参考snort规则(suricata ...
- AJPFX:关于面向对象及java的一些机制的思考
1.变量的作用域和生命周期什么关系? 2.java除了在类体和方法体(包括参数)中可以声明变量外,其他位置一定不可以声明变量吗?比如高级别的应用里是不是有例外呢? 3.java源文件中代码的组织方式一 ...
- js 宿主对象的属性和方法总结
(1)属性: //height,width; a=document.documentElement.clientHeight; //文档可视高度,由 ...