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
解析php5配置使用pdo
Jul 03 PHP
ThinkPHP使用smarty模板引擎的方法
Jul 01 PHP
ThinkPHP框架实现session跨域问题的解决方法
Jul 01 PHP
PHP中的替代语法简介
Aug 22 PHP
PHP中抽象类、接口的区别与选择分析
Mar 29 PHP
PHP获取用户访问IP地址的5种方法
May 16 PHP
完美解决phpdoc导出文档中@package的warning及Error的错误
May 17 PHP
php类的自动加载操作实例详解
Sep 28 PHP
验证坐标在某坐标区域内php代码
Oct 08 PHP
php intval函数用法总结
Apr 14 PHP
laravel 使用auth编写登录的方法
Sep 30 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
PHP cdata 处理(详细介绍)
2013/07/05 PHP
thinkphp中memcache的用法实例
2014/11/29 PHP
php实现将Session写入数据库
2015/07/26 PHP
PHP访问数据库集群的方法小结
2016/03/14 PHP
人脸识别测颜值、测脸龄、测相似度微信接口
2016/04/07 PHP
PHP+sqlite数据库操作示例(创建/打开/插入/检索)
2016/05/26 PHP
用javascript实现无刷新更新数据的详细步骤 asp
2006/12/26 Javascript
javascript算法学习(直接插入排序)
2011/04/12 Javascript
基于jquery的$.ajax async使用
2011/10/19 Javascript
Javascript实现关联数据(Linked Data)查询及注意细节
2013/02/22 Javascript
jQuery对象的selector属性用法实例
2014/12/27 Javascript
jQuery中prevUntil()方法用法实例
2015/01/08 Javascript
在JavaScript中操作时间之setYear()方法的使用
2015/06/12 Javascript
在AngularJS中如何使用谷歌地图把当前位置显示出来
2016/01/25 Javascript
javascript实现复选框全选或反选
2017/02/04 Javascript
微信页面弹出键盘后iframe内容变空白的解决方案
2017/09/20 Javascript
解决vue.js this.$router.push无效的问题
2018/09/03 Javascript
VSCode使用之Vue工程配置eslint
2019/04/30 Javascript
JS实现电商商品展示放大镜特效
2020/01/07 Javascript
浅谈Vue使用Cascader级联选择器数据回显中的坑
2020/10/31 Javascript
Windows下安装python2.7及科学计算套装
2015/03/05 Python
python enumerate函数的使用方法总结
2017/11/15 Python
python使用生成器实现可迭代对象
2018/03/20 Python
Sanic框架应用部署方法详解
2018/07/18 Python
python中的for循环
2018/09/28 Python
Tensorflow 模型转换 .pb convert to .lite实例
2020/02/12 Python
python GUI库图形界面开发之PyQt5单行文本框控件QLineEdit详细使用方法与实例
2020/02/27 Python
利用html5 file api读取本地文件示例(如图片、PDF等)
2018/03/07 HTML / CSS
英国最大的户外商店:Go Outdoors
2019/04/17 全球购物
Viking Direct爱尔兰:办公用品和家具
2019/11/21 全球购物
文明学生标兵事迹
2014/01/21 职场文书
党员大会主持词
2014/04/02 职场文书
2015年加油站工作总结
2015/05/13 职场文书
伊索寓言读书笔记
2015/06/30 职场文书
导游词之鲁迅祖居
2019/10/17 职场文书
oracle数据库去除重复数据
2022/05/20 Oracle