php自定义函数实现二维数组排序功能


Posted in PHP onJuly 20, 2016

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

/**作用: 二维数组排序函数,支持多键名排序
 * 返回: 排序好的数组
 * 使用: array_msort(数组,需要排序的键名,排序方式);
 * 例子: array_msort($cflist,"chapter_orderid","SORT_ASC");
 *    array_msort($arr,"name","SORT_ASC","type","SORT_DESC","size","SORT_ASC","SORT_STRING");
 */
function array_msort($ArrayData,$KeyName1,$SortOrder1 = "SORT_ASC",$SortType1 = "SORT_REGULAR") {
  if(!is_array($ArrayData)) {
    return $ArrayData;
  }
  // 获取参数数量.
  $ArgCount = func_num_args();
  // 排序,并放置到SortRule数组
  for($i = 1;$i < $ArgCount;$i ++) {
    $Arg = func_get_arg($i);
    if(!eregi("SORT",$Arg)) {
      $KeyNameList[] = $Arg;
      $SortRule[] = '$'.$Arg;
    }
    else {
      $SortRule[] = $Arg;
    }
  }
  // Get the values according to the keys and put them to array.
  foreach($ArrayData AS $Key => $Info) {
    foreach($KeyNameList AS $KeyName) {
      ${$KeyName}[$Key] = $Info[$KeyName];
    }
  }
  // Create the eval string and eval it.
  $EvalString = 'array_multisort('.join(",",$SortRule).',$ArrayData);';
  eval($EvalString);
  return $ArrayData;
}

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
php 读取文件乱码问题
Feb 20 PHP
PHP var_dump遍历对象属性的函数与应用代码
Jun 04 PHP
php 目录遍历、删除 函数的使用介绍
Apr 28 PHP
Codeigniter框架的更新事务(transaction)BUG及解决方法
Jul 25 PHP
PHP中的日期加减方法示例
Aug 21 PHP
一个图片地址分解程序(用于PHP小偷程序)
Aug 23 PHP
php实现两表合并成新表并且有序排列的方法
Dec 05 PHP
PHP编程中的__clone()方法使用详解
Nov 27 PHP
yii2简单使用less代替css示例
Mar 10 PHP
PHP错误处理函数register_shutdown_function使用示例
Jul 03 PHP
php通过各种函数判断0和空
Jul 04 PHP
PHP安全之register_globals的on和off的区别
Jul 23 PHP
Ajax提交表单时验证码自动验证 php后端验证码检测
Jul 20 #PHP
php使用get_class_methods()函数获取分类的方法
Jul 20 #PHP
PHP+Ajax验证码验证用户登录
Jul 20 #PHP
PHP+Ajax实现验证码的实时验证
Jul 20 #PHP
php+ajax注册实时验证功能
Jul 20 #PHP
PHP实现的随机IP函数【国内IP段】
Jul 20 #PHP
Zend Framework教程之Zend_Helpers动作助手ViewRenderer用法详解
Jul 20 #PHP
You might like
php调用mysql存储过程实例分析
2014/12/29 PHP
Yii2框架数据库简单的增删改查语法小结
2016/08/31 PHP
thinkPHP订单数字提醒功能的实现方法
2016/12/01 PHP
js onload处理html页面加载之后的事件
2013/10/30 Javascript
Javascript实现滚动图片新闻的实例代码
2013/11/27 Javascript
JS执行删除前的判断代码
2014/02/18 Javascript
jQuery mobile类库使用时加载导航历史的方法简介
2015/12/04 Javascript
使用jQuery制作遮罩层弹出效果的极简实例分享
2016/05/12 Javascript
利用Javascript实现BMI计算器
2016/08/16 Javascript
javascript加载xml 并解析各节点的值(实现方法)
2016/10/12 Javascript
vue实现app页面切换动画效果实例
2017/05/23 Javascript
浅谈vue中使用图片懒加载vue-lazyload插件详细指南
2017/10/23 Javascript
解决vue2.0 element-ui中el-upload的before-upload方法返回false时submit()不生效问题
2018/08/24 Javascript
浅谈React之状态(State)
2018/09/19 Javascript
解决vue A对象赋值给B对象,修改B属性会影响到A的问题
2018/09/25 Javascript
详解vue 项目白屏解决方案
2018/10/31 Javascript
layui: layer.open加载窗体时出现遮罩层的解决方法
2019/09/26 Javascript
vue中英文切换实例代码
2020/01/21 Javascript
[01:14:41]DOTA2-DPC中国联赛定级赛 iG vs Magma BO3第一场 1月8日
2021/03/11 DOTA
python分析nignx访问日志脚本分享
2015/02/26 Python
Python装饰器用法实例总结
2018/05/26 Python
细数nn.BCELoss与nn.CrossEntropyLoss的区别
2020/02/29 Python
calendar在python3时间中常用函数举例详解
2020/11/18 Python
如何利用Python matplotlib绘制雷达图
2020/12/21 Python
CSS3利用text-shadow属性实现多种效果的文字样式展现方法
2016/08/25 HTML / CSS
html5唤起app的方法
2017/11/30 HTML / CSS
澳大利亚宠物商店:Petbarn
2017/11/18 全球购物
C#中有没有运算符重载?能否使用指针?
2014/05/05 面试题
汽修专业学生自我鉴定
2013/11/16 职场文书
化工专业大学生职业生涯规划书
2014/01/14 职场文书
关于逃课的检讨书
2014/01/23 职场文书
面试后的英文感谢信
2014/02/01 职场文书
交通事故委托书范本精选
2014/10/04 职场文书
教师作风建设剖析材料
2014/10/11 职场文书
甲午大海战观后感
2015/06/02 职场文书
Django Paginator分页器的使用示例
2021/06/23 Python