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 相关文章推荐
删除无限分类并同时删除它下面的所有子分类的方法
Aug 08 PHP
PHP开发规范手册之PHP代码规范详解
Jan 13 PHP
PHP开发中常用的字符串操作函数
Feb 08 PHP
PHP 获取MySQL数据库里所有表的实现代码
Jul 13 PHP
php解析xml提示Invalid byte 1 of 1-byte UTF-8 sequence错误的处理方法
Nov 14 PHP
Windows中使用计划任务自动执行PHP程序实例
May 09 PHP
PHP定时任务延缓执行的实现
Oct 08 PHP
php动态变量定义及使用
Jun 10 PHP
php导出生成word的方法
Dec 25 PHP
PHP编程入门的基本语法知识点总结
Jan 26 PHP
PHP实现可自定义样式的分页类
Mar 29 PHP
php实现单笔转账到支付宝功能
Oct 09 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
【COS正片】蕾姆睡衣cos,纯洁可爱被治愈了 cn名濑弥七
2020/03/02 日漫
dedecms后台验证码总提示错误的解决方法
2007/03/21 PHP
配置php网页显示各种语法错误
2013/09/23 PHP
Discuz7.2版的faq.php SQL注入漏洞分析
2014/08/06 PHP
php提高网站效率的技巧
2015/09/29 PHP
PHP微信开发之查询微信精选文章
2016/06/23 PHP
PHP获取用户客户端真实IP的解决方案
2016/10/10 PHP
Javascript日期对象的dateAdd与dateDiff方法
2008/11/18 Javascript
js 无提示关闭浏览器页面的代码
2010/03/09 Javascript
原创javascript小游戏实现代码
2010/08/19 Javascript
juery框架写的弹窗效果适合新手
2013/11/27 Javascript
jquery提交form表单时禁止重复提交的方法
2014/02/13 Javascript
url传递的参数值中包含&amp;时,url自动截断问题的解决方法
2016/08/02 Javascript
AngularJS入门教程之数据绑定原理详解
2016/11/02 Javascript
JS作用域深度解析
2016/12/29 Javascript
jQuery表格的维护和删除操作
2017/02/03 Javascript
JavaScript DOM元素常见操作详解【添加、删除、修改等】
2018/05/09 Javascript
Vue2(三)实现子菜单展开收缩,带动画效果实现方法
2019/04/28 Javascript
浅谈ECMAScript 中的Array类型
2019/06/10 Javascript
js实现简单的打印表格
2020/01/15 Javascript
js实现点击选项置顶动画效果
2020/08/25 Javascript
Python 的描述符 descriptor详解
2016/02/27 Python
Python heapq使用详解及实例代码
2017/01/25 Python
python 中random模块的常用方法总结
2017/07/08 Python
python做量化投资系列之比特币初始配置
2018/01/23 Python
使用python编写监听端
2018/04/12 Python
Python实现的线性回归算法示例【附csv文件下载】
2018/12/29 Python
Python 炫技操作之合并字典的七种方法
2020/04/10 Python
同步和异步有何异同,在什么情况下分别使用他们?
2012/12/28 面试题
新员工培训个人的自我评价
2013/10/09 职场文书
总裁岗位职责
2013/12/04 职场文书
应届生求职自荐信范文
2014/04/07 职场文书
中学生检讨书范文
2014/11/03 职场文书
2015年保管员工作总结
2015/04/30 职场文书
position:sticky 粘性定位的几种巧妙应用详解
2021/04/24 HTML / CSS
Python万能模板案例之matplotlib绘制甘特图
2022/04/13 Python