数组排序,共13个

  • 函数中有u的,能自定义比较函数;有k的,按照键来排序;有r(reverse)的,倒序;有a(association)的,一定是键值关联,除了rsort() usort() sort() shuffle(),其他没有a的都是键值关联,array_multisort()键值关联的保持,数字类型的不保持。
  • 下列的所有排序函数都是直接作用于数组本身, 而不是返回一个新的有序的数组。
  • 以下函数对于数组中相等的元素,它们在排序后的顺序是未定义的。 (也即相等元素之间的顺序是不稳定的,即具有相同值的元素每次排序的结果都是不确定(关联数组))。php7asort 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);
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数组函数(一)的更多相关文章

  1. PHP函数积累总结(Math函数、字符串函数、数组函数)

    Math函数:10个较常用标红.abs — 绝对值acos — 反余弦acosh — 反双曲余弦asin — 反正弦asinh — 反双曲正弦atan2 — 两个参数的反正切atan — 反正切ata ...

  2. php字符串函数和数组函数

    /验证码$str="abcdefghijklmnopqrstuvwxyz0123456789";$a=substr($str,rand(0,35),1);$b=substr($st ...

  3. 求数组差/交集函数-php数组函数(二)

    求数组差集函数 函数只检查了多维数组中的一维.可以用 array_diff($array1[0], $array2[0]) 检查更深的维度. u:自定义函数比较,a(association):同时比较 ...

  4. js课程 3-10 js中字符串函数数组函数和其它语言中对应函数的区别和联系是什么

    js课程 3-10  js中字符串函数数组函数和其它语言中对应函数的区别和联系是什么 一.总结 一句话总结:js中是对象点方法的形式,这些方法都是对象的方法,而在php.java中却不是这样. 1.j ...

  5. javascript函数一共可分为五类: ·常规函数 ·数组函数 ·日期函数 ·数学函数 ·字符串函数

    javascript函数一共可分为五类:    ·常规函数    ·数组函数    ·日期函数    ·数学函数    ·字符串函数    1.常规函数    javascript常规函数包括以下9个 ...

  6. PHP 数组函数-数组排序

    php数组排序函数sort ( &$arr [,fruits] ) 对数组进行从低到高排序 ,并赋予新的键名 返回boolrsort ( &$arr [,fruits] ) 对数组进行 ...

  7. PHP数组函数总结

    array_change_key_case - 返回字符串键名全为小写或大写的数组 array_chunk - 将一个数组分割成多个 array_column - 返回数组中指定的一列 array_c ...

  8. php常用的数组函数

    array_change_key_case -- 返回字符串键名全为小写或大写的数组 array_chunk -- 将一个数组分割成多个 array_combine --  创建一个数组,用一个数组的 ...

  9. PHP基础 数组函数 的总结

    <?php /** * PHP基础 数组操作函数 * * 指针函数:[类似于数据库的游标] 见例1.1 * current($arr)/pos 返回当前指针指向的元素 * key($arr) 返 ...

随机推荐

  1. Akka源码分析-Serialization

    今天我们来谈一下akka的序列化框架,其实序列化.反序列化是一个老生常谈的问题,那么我们为什么还要研究一下akka的序列化框架呢?不就是使用哪种序列化.反序列化方法的区别么?其实刚开始的时候我也是这么 ...

  2. P2885 [USACO07NOV]电话线Telephone Wire——Chemist

    题目: https://www.luogu.org/problemnew/show/P2885 由于把每一根电线杆增加多少高度不确定,所以很难直接通过某种方法算出答案,考虑动态规划. 状态:f [ i ...

  3. Oracle11.2.0.1升级到11.2.0.3

    Oracle数据库升级也并非简单的事,这篇博客,博主对Oracle那点事做了较详细的介绍: http://blog.itpub.net/9599/viewspace-473003/ 我还属于Oracl ...

  4. [Usaco2006 Open]County Fair Events 参加节日庆祝

    Description Farmer John has returned to the County Fair so he can attend the special events (concert ...

  5. CentOS 6.5使用:[3]使用xftp传递文件

    先检查CentOS系统是否安装了FTP服务 [root@centos ~]# rpm -qa | grep vsftpd 如果有内容输出,那么恭喜你,你的系统已经安装了ftp服务   如果没有那么按照 ...

  6. Matrix Transformation codechef 数学题

    https://www.codechef.com/problems/MTRNSFRM 我只能说codechef的题好劲爆,这题居然是easy的题,太可怕了.而且还有一点就是codechef的题解很难看 ...

  7. [转]在ASP.NET MVC3中使用EFCodeFirst 1.0

    本文转自:http://kb.cnblogs.com/page/97003/ 作者: NinoFocus  来源: 博客园  发布时间: 2011-04-12 10:41  阅读: 11971 次   ...

  8. vue项目中安装cnpm和node_modules

    1.安装cnpm的nodejs包管理工具,命令行: npm install -g cnpm --registry=https://registry.npm.taobao.org   2. 每个vue项 ...

  9. php debug/phpstorm调试

    apache+phpstorm调试php代码,修改php.ini配置文件开启调试,没有以下代码加上即可, [XDebug]zend_extension="C:\php\php-7.0.12- ...

  10. 升级 Cocoapods 到1.2.0指定版本,降低版本及卸载

    =====================升级版本=================== CocoaPods 1.1.0+ is required to build SnapKit 3.0.0+. 在 ...