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 高手之路(二)
Oct 09 PHP
php win下Socket方式发邮件类
Aug 21 PHP
PHP第一季视频教程(李炎恢+php100 不断更新)
May 29 PHP
php数组声明、遍历、数组全局变量使用小结
Jun 05 PHP
PHP中fwrite与file_put_contents性能测试代码
Aug 02 PHP
深入理解PHP内核(一)
Nov 10 PHP
orm获取关联表里的属性值
Apr 17 PHP
Thinkphp单字母函数使用指南
May 08 PHP
PHP jQuery+Ajax结合写批量删除功能
May 19 PHP
原生JS实现Ajax通过GET方式与PHP进行交互操作示例
May 12 PHP
CI(CodeIgniter)框架中URL特殊字符处理与SQL注入隐患分析
Feb 28 PHP
is_file和file_exists效率比较
Mar 14 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 中文字符串首字母的获取函数分享
2013/11/04 PHP
thinkphp3.x中display方法及show方法的用法实例
2016/05/19 PHP
php制作基于xml的RSS订阅源功能示例
2017/02/08 PHP
PHP应用跨时区功能的实现方法
2019/03/21 PHP
基于PHP+Jquery制作的可编辑的表格的代码
2011/04/10 Javascript
js 分页全选或反选标识实现代码
2011/08/09 Javascript
artDialog双击会关闭对话框的修改过程分享
2013/08/05 Javascript
安装使用Mongoose配合Node.js操作MongoDB的基础教程
2016/03/01 Javascript
jQuery实现底部浮动窗口效果
2016/09/07 Javascript
JS实现的幻灯片切换显示效果
2016/09/07 Javascript
手动初始化Angular的模块与控制器
2016/12/26 Javascript
JS实现的添加弹出层并完成锁屏操作示例
2017/04/07 Javascript
详解vue.js移动端导航navigationbar的封装
2017/07/05 Javascript
在mpvue框架中使用Vant WeappUI组件库的注意事项【推进】
2019/06/09 Javascript
javascript中的this作用域详解
2019/07/15 Javascript
vue-loader中引入模板预处理器的实现
2019/09/04 Javascript
vue 父组件通过$refs获取子组件的值和方法详解
2019/11/07 Javascript
[02:36]DOTA2英雄基础教程 斯拉克
2013/11/29 DOTA
python中sleep函数用法实例分析
2015/04/29 Python
Python批量重命名同一文件夹下文件的方法
2015/05/25 Python
深入理解Python装饰器
2016/07/27 Python
Python3简单实例计算同花的概率代码
2017/12/06 Python
python使用pygame框架实现推箱子游戏
2018/11/20 Python
PyQt5实现暗黑风格的计时器
2019/07/29 Python
python日志模块logbook使用方法
2019/09/19 Python
使用python实现对元素的长截图功能
2019/11/14 Python
财务支持类个人的自我评价
2014/02/14 职场文书
搞笑创意广告语
2014/03/17 职场文书
增员口号大全
2014/06/18 职场文书
婚前协议书范本
2014/10/27 职场文书
出国留学英文自荐信
2015/03/25 职场文书
小学校长开学致辞
2015/07/29 职场文书
《认识钟表》教学反思
2016/02/16 职场文书
2016年妇联“6﹒26国际禁毒日”宣传活动总结
2016/04/05 职场文书
小学秋季运动会加油口号及加油稿
2019/08/19 职场文书
Go 语言下基于Redis分布式锁的实现方式
2021/06/28 Golang