php中usort自定义排序如何使用

一、总结

一句话总结:多写一个规则函数,而这个函数的写法和普通函数一样,调用的时候规则函数用函数名的字符串。

1、用户自定义规则函数有哪三个?

usort — 使用用户自定义的比较函数对数组中的值进行排序

uksort — 使用用户自定义的比较函数对数组中的键名进行排序

uasort — 使用用户自定义的比较函数对数组中的值进行排序并保持索引关联

2、规则函数怎么写?

和普通函数的写法一样,和c++中规则函数的写法也一样

3、usort()如何调用规则函数?

函数名的字符串

  1. uasort($arr,'compare_arr');

二、php中usort自定义排序

usort — 使用用户自定义的比较函数对数组中的值进行排序

uksort — 使用用户自定义的比较函数对数组中的键名进行排序

uasort — 使用用户自定义的比较函数对数组中的值进行排序并保持索引关联

PHP自定义数组排序

  1. /*
  2. * 二维数组自定义排序函数
  3. * uasort($arr,function_name)
  4. *
  5. **/
  6. $arr = array(
  7. array('a'=>1,'b'=>'c'),
  8. array('a'=>4,'b'=>'a'),
  9. array('a'=>5,'b'=>'g'),
  10. array('a'=>7,'b'=>'f'),
  11. array('a'=>6,'b'=>'e')
  12. );
  13.  
  14. function compare_arr($x,$y){
  15. if($x['b']<$y['b']){
  16. return -1;
  17. }else if($x['b']>$y['b']){
  18. return 1;
  19. }else{
  20. return 0;
  21. }
  22. }
  23.  
  24. uasort($arr,'compare_arr');
  25.  
  26. foreach($arr as $a){
  27. echo $a['a'].'=>'.$a['b'].'<br/>';
  28. }

手册里的自定义排序类:

  1. class multiSort
  2. {
  3. var $key; //key in your array
  4.  
  5. //排序函数 参数依次是 数组 待排列索引 排序类型
  6. function run ($myarray, $key_to_sort, $type_of_sort = '')
  7. {
  8. $this->key = $key_to_sort;
  9.  
  10. if ($type_of_sort == 'desc')
  11. uasort($myarray, array($this, 'myreverse_compare'));
  12. else
  13. uasort($myarray, array($this, 'mycompare'));
  14.  
  15. return $myarray;
  16. }
  17.  
  18. //正序
  19. function mycompare($x, $y)
  20. {
  21. if ( $x[$this->key] == $y[$this->key] )
  22. return 0;
  23. else if ( $x[$this->key] < $y[$this->key] )
  24. return -1;
  25. else
  26. return 1;
  27. }
  28.  
  29. //逆序
  30. function myreverse_compare($x, $y)
  31. {
  32. if ( $x[$this->key] == $y[$this->key] )
  33. return 0;
  34. else if ( $x[$this->key] > $y[$this->key] )
  35. return -1;
  36. else
  37. return 1;
  38. }
  39. }
 

php中usort自定义排序如何使用的更多相关文章

  1. php中数组自定义排序

    php中数组自定义排序方法有很多,现在只提usort();不会保留原有键名. unsort调用方法就是unsrot($arr,func); 注意: 如果func是写在当前类中的话,那么调用的方式是 u ...

  2. Access中的自定义排序设置方式

    一.问题起因 最近有网友提问说,Access中在用查询指定排序方式时,为什么只有升序跟降序,怎么米有自定义排序了?竟然比Excel都弱啊! 其实这是对Access的误解,我这就给大家来解一下疑惑.案例 ...

  3. 007_对go语言中的自定义排序sort的小练习

    在go语言基础知识中,有个知识点是go语言的自定义排序,我在学习完之后,自己做了一些小练习和总结. 首先按照惯例,还是呈上代码演示: package main import "fmt&quo ...

  4. Spark(三)【RDD中的自定义排序】

    在RDD中默认的算子sortBy,sortByKey只能真的值类型数据升序或者降序 现需要对自定义对象进行自定义排序. 一组Person对象 /** * Person 样例类 * @param nam ...

  5. php自定义排序数组usort和uasort(uasort保持索引关联)(usort($arr, "cmp");)(比较函数时很普通函数的写法:function cmp($a, $b))

    php自定义排序数组usort和uasort(uasort保持索引关联)(usort($arr, "cmp");)(比较函数时很普通函数的写法:function cmp($a, $ ...

  6. Lucene 中自定义排序的实现

    使用Lucene来搜索内容,搜索结果的显示顺序当然是比较重要的.Lucene中Build-in的几个排序定义在大多数情况下是不适合我们使用的.要适合自己的应用程序的场景,就只能自定义排序功能,本节我们 ...

  7. stl 自定义排序与删除重复元素

    转: STL—vector删除重复元素 STL提供了很多实用的算法,这里主要讲解sort和unique算法. 删除重复元素,首先将vector排序. sort( vecSrc.begin(), vec ...

  8. Python自定义排序及我实际遇到的一些题目实例

    写在前面,本文主要介绍Python基础排序和自定义排序的一些规则,如果都比较熟悉,可以直接翻到第三节,看下实际的笔试面试题中关于自定义排序的应用. 一.基础排序 排序是比较基础的算法,与很多语言一样, ...

  9. 【转】c++中Vector等STL容器的自定义排序

    如果要自己定义STL容器的元素类最好满足STL容器对元素的要求    必须要求:     1.Copy构造函数     2.赋值=操作符     3.能够销毁对象的析构函数    另外:     1. ...

随机推荐

  1. BZOJ2882

    传送门:BZOJ2882(权限题) 最小表示法的模板. 传送门:周神论文 代码上的小细节见下. #include <cstdio> #include <cstdlib> #in ...

  2. Android app : use html or native?

    Android app可分为两种:网络(html)应用程序和原生(native)应用程序 首先,我们先来讨论下如何判断一个app是html实现还是native实现. 设置-->>开发者选项 ...

  3. android 弹幕评论效果

    纯粹依照自己的想法仿照b站的弹幕写的一个demo,不知道正确的姿势怎么样的. demo下载地址 首先.一条弹幕就是一个textview public abstract class Danmu exte ...

  4. [51Nod]NOIP2018提高组省一冲奖班模测训练(四)翻车记+题解

    链接 下午5点的时候,突然想起来有这个比赛,看看还有一个小时,打算来AK一下,结果因为最近智商越来越低,翻车了,我还是太菜了.上来10分钟先切掉了C和A,结果卡在了B题,唉. A.砍树 一眼题,两遍树 ...

  5. Ajax : load()

    <body> <input type="button" value="Ajax" /> <div id="box&quo ...

  6. 企业部署Linux应用将拥有更低的TCO

    650) this.width=650;" onclick='window.open("http://blog.51cto.com/viewpic.php?refimg=" ...

  7. Express简介、安装

    Express 基于Node.js平台,快速.开放.极简的web开发框架,是目前最流行的基于Node.js的web开发框架,它提供一系列强大的功能,比如: 路由控制 参数获取 send和sendFil ...

  8. 自定义input[type="checkbox"]样式

    input[type=checkbox] { visibility: hidden; position: relative;} input[type=checkbox]:after { content ...

  9. 数值溢出(arithmetic overflow)问题与解决方案

    0. 典型场景 两数相加(乘法).两数相减.一个数的阶乘,一个数的幂,这些统统可能造成数值的溢出: 避免数值溢出的方法: 当把一个计算出的很大的数赋值给一个 int(2^31-1)类型变量存储时,一般 ...

  10. libcurl 上传文件至 web服务器

    测试环境搭建, 使用 wamp server (windows下的 apache+MySQL+php) libcurl vc6 工程代码  下载地址:  http://download.csdn.ne ...