php自定义排序uasort函数示例【二维数组按指定键值排序】


Posted in PHP onJune 19, 2019

本文实例讲述了php自定义排序uasort函数。分享给大家供大家参考,具体如下:

项目需要风险排序,按 I(安全)<L(低风险)<M(中风险)<H(高风险) 的级别来排序

由于H排在I的前面,所以不能直接用sort来排序,要自定义。

用uasort()函数来自定义排序:

/*
 * 二维数组按指定键值排须
 */
function arr_sort($array,$key,$order="asc"){//asc是升序 desc是降序//按 I<L<M<H 排序
  $arr_nums=$arr=array();
  foreach($array as $k=>$v){
    $arr_nums[$k]=$v[$key];
  }
  if($order=='asc'){
    uasort($arr_nums,'my_sort_asc');
  }else{
    uasort($arr_nums,'my_sort_desc');
  }
  foreach($arr_nums as $k=>$v){
    $arr[$k]=$array[$k];
  }
  return $arr;
}
function my_sort_desc($a,$b){
  if($a==$b) return 0;
  if($a=='I' && $b!='I') return 1;
  if($a=='L' && $b!='I') return 1;
  if($a=='L' && $b=='I') return -1;
  if($a=='M' && $b!='H') return -1;
  if($a=='M' && $b=='H') return 1;
  if($a=='H' && $b!='H') return -1;
}
function my_sort_asc($a,$b){
  if($a==$b) return 0;
  if($a=='I' && $b!='I') return -1;
  if($a=='L' && $b!='I') return -1;
  if($a=='L' && $b=='I') return 1;
  if($a=='M' && $b!='H') return 1;
  if($a=='M' && $b=='H') return -1;
  if($a=='H' && $b!='H') return 1;
}
PHP 相关文章推荐
PHP分页显示制作详细讲解
Oct 09 PHP
PHP4 与 MySQL 交互使用
Oct 09 PHP
如何用phpmyadmin设置mysql数据库用户的权限
Jan 09 PHP
解析php二分法查找数组是否包含某一元素
May 23 PHP
zend framework文件上传功能实例代码
Dec 25 PHP
PHP 错误处理机制
Jul 06 PHP
PHP连接MYSQL数据库实例代码
Jan 20 PHP
PHP的openssl加密扩展使用小结(推荐)
Jul 18 PHP
ThinkPHP中session函数详解
Sep 14 PHP
php操作路径的经典方法(必看篇)
Oct 04 PHP
PHP defined()函数的使用图文详解
Jul 20 PHP
PHP连接SQL server数据库测试脚本运行实例
Aug 24 PHP
windows 2008r2+php5.6.28环境搭建详细过程
Jun 18 #PHP
PHP进阶学习之类的自动加载机制原理分析
Jun 18 #PHP
PHP进阶学习之垃圾回收机制详解
Jun 18 #PHP
PHP进阶学习之命名空间基本用法分析
Jun 18 #PHP
PHP进阶学习之反射基本概念与用法分析
Jun 18 #PHP
Laravel使用RabbitMQ的方法示例
Jun 18 #PHP
thinkphp整合系列之极验滑动验证码geetest功能
Jun 18 #PHP
You might like
增加反向链接的101个方法 站长推荐
2007/01/31 PHP
网友原创的PHP模板类代码
2008/09/07 PHP
PHP学习 变量使用总结
2011/03/24 PHP
nginx+php-fpm配置文件的组织结构介绍
2012/11/07 PHP
php生成短域名函数
2015/03/23 PHP
基于linnux+phantomjs实现生成图片格式的网页快照
2015/04/15 PHP
PHP开启opcache提升代码性能
2015/04/26 PHP
从性能方面考虑PHP下载远程文件的3种方法
2015/12/29 PHP
PHP使用Redis长连接的方法详解
2018/02/12 PHP
jquery遍历checkbox介绍
2014/02/21 Javascript
利用nodejs监控文件变化并使用sftp上传到服务器
2017/02/18 NodeJs
微信小程序scroll-view实现横向滚动和上拉加载示例
2017/03/06 Javascript
JavaScript数据结构学习之数组、栈与队列
2017/05/02 Javascript
微信小程序中使用javascript 回调函数
2017/05/11 Javascript
基于node.js之调试器详解
2017/08/22 Javascript
vue axios同步请求解决方案
2017/09/29 Javascript
javascript(基于jQuery)实现鼠标获取选中的文字示例【测试可用】
2019/10/26 jQuery
vue-socket.io跨域问题有效解决方法
2020/02/11 Javascript
[04:17]DOTA2完美盛典,rOtk、BurNIng携手巴图演唱《倔强》
2017/11/28 DOTA
[42:25]EG vs Spirit Supermajor 败者组 BO3 第二场 6.4
2018/06/05 DOTA
python实现ip代理池功能示例
2019/07/05 Python
Flask-WTF表单的使用方法
2019/07/12 Python
Django模型修改及数据迁移实现解析
2019/08/01 Python
Python3+Requests+Excel完整接口自动化测试框架的实现
2019/10/11 Python
浅谈django框架集成swagger以及自定义参数问题
2020/07/07 Python
html5 div布局与table布局详解
2016/11/16 HTML / CSS
js正则匹配markdown里的图片标签的实现
2021/03/24 Javascript
大学军训感言200字
2014/02/26 职场文书
我的中国梦演讲稿高中篇
2014/08/19 职场文书
学校个人对照检查材料
2014/08/26 职场文书
财产分割协议书范本
2014/11/03 职场文书
语文教师求职信范文
2015/03/20 职场文书
三八妇女节致辞
2015/07/31 职场文书
画错魏国疆域啦!《派对咖孔明》动画因作画失误于官网致歉
2022/04/07 日漫
关于Redis的主从复制及哨兵问题
2022/06/16 Redis