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+AJAX聊天程序[聊天室]提供下载
Jul 21 PHP
php快速url重写更新版[需php 5.30以上]
Apr 25 PHP
PHP的加密方式及原理
Jun 14 PHP
php定时计划任务的实现方法详解
Jun 06 PHP
探讨PHP删除文件夹的三种方法
Jun 09 PHP
php颜色转换函数hex-rgb(将十六进制格式转成十进制格式)
Sep 23 PHP
php实现批量下载百度云盘文件例子分享
Apr 10 PHP
Yii 快速,安全,专业的PHP框架
Sep 03 PHP
跨浏览器PHP下载文件名中的中文乱码问题解决方法
Mar 05 PHP
php通过array_merge()函数合并两个数组的方法
Mar 18 PHP
PHP中类型转换 ,常量,系统常量,魔术常量的详解
Oct 26 PHP
PHP简单实现欧拉函数Euler功能示例
Nov 06 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实现多张图片上传加水印技巧
2013/04/18 PHP
php实现的DateDiff和DateAdd时间函数代码分享
2014/08/16 PHP
PHP会话控制:Session与Cookie详解
2014/09/27 PHP
PHP正则验证Email的方法
2015/06/15 PHP
php  单例模式详细介绍及实现源码
2016/11/05 PHP
PHPExcel实现的读取多工作表操作示例
2020/04/14 PHP
javascript css在IE和Firefox中区别分析
2009/02/18 Javascript
JavaScript中String和StringBuffer的速度之争
2010/04/01 Javascript
jQuery 动画弹出窗体支持多种展现方式
2010/04/29 Javascript
Javascript小技巧之生成html元素
2014/05/15 Javascript
AngularJS入门教程之学习环境搭建
2014/12/06 Javascript
JS实现的论坛Ajax打分效果完整实例
2015/10/31 Javascript
详解Javacript和AngularJS中的Promises
2016/02/09 Javascript
Nodejs如何复制文件
2016/03/09 NodeJs
Servlet实现文件上传,可多文件上传示例
2016/12/05 Javascript
Vue的MVVM实现方法
2017/08/16 Javascript
layui table设置前台过滤转义等方法
2018/08/17 Javascript
解决layer弹出层msg的文字不显示的问题
2019/09/11 Javascript
[08:54]《一刀刀一天》之DOTA全时刻18:十九支奔赴西雅图队伍全部出炉
2014/06/04 DOTA
[11:33]DAC2018 4.5SOLO赛决赛 MidOne vs Paparazi第二场
2018/04/06 DOTA
Python堆排序原理与实现方法详解
2018/05/11 Python
Pycharm导入Python包,模块的图文教程
2018/06/13 Python
python实现自动网页截图并裁剪图片
2018/07/30 Python
python接口自动化(十七)--Json 数据处理---一次爬坑记(详解)
2019/04/18 Python
Python爬取智联招聘数据分析师岗位相关信息的方法
2019/08/13 Python
python 图片二值化处理(处理后为纯黑白的图片)
2019/11/01 Python
Python中无限循环需要什么条件
2020/05/27 Python
Django如何实现密码错误报错提醒
2020/09/04 Python
俄罗斯在线手表和珠宝商店:AllTime
2019/09/28 全球购物
中考冲刺决心书
2014/03/11 职场文书
公司年会主持词
2014/03/22 职场文书
2015年个人思想总结
2015/03/09 职场文书
2015年老干部工作总结
2015/04/23 职场文书
情侣餐厅的创业计划书范本!
2019/07/26 职场文书
vue3中的组件间通信
2021/03/31 Vue.js
MySQL索引是啥?不懂就问
2021/07/21 MySQL