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 相关文章推荐
用Apache反向代理设置对外的WWW和文件服务器
Oct 09 PHP
在php中使用sockets:从新闻组中获取文章
Oct 09 PHP
PHP 和 MySQL 基础教程(二)
Oct 09 PHP
Apache环境下PHP利用HTTP缓存协议原理解析及应用分析
Feb 16 PHP
PHP 日,周,月点击排行统计
Jan 11 PHP
PHP基础之运算符的使用方法
Apr 28 PHP
php set_time_limit()函数的使用详解
Jun 05 PHP
php中require和require_once的区别说明
Feb 27 PHP
浅析ThinkPHP中execute和query方法的区别
Jun 13 PHP
PHP二维数组排序简单实现方法
Feb 14 PHP
使用PHP连接数据库_实现用户数据的增删改查的整体操作示例
Sep 01 PHP
php JWT在web端中的使用方法教程
Sep 06 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
批量修改RAR文件注释的php代码
2010/11/20 PHP
PHP开发不能违背的安全规则 过滤用户输入
2011/05/01 PHP
php json_encode奇怪问题说明
2011/09/27 PHP
PHP判断来访是搜索引擎蜘蛛还是普通用户的代码小结
2015/09/14 PHP
php getcwd与dirname(__FILE__)区别详解
2016/09/24 PHP
静态的动态续篇之来点XML
2006/12/23 Javascript
ppk谈JavaScript style属性
2008/10/10 Javascript
javascript 面向对象编程基础:继承
2009/08/21 Javascript
JQuery Tips(4) 一些关于提高JQuery性能的Tips
2009/12/19 Javascript
让浏览器非阻塞加载javascript的几种方法小结
2011/04/25 Javascript
各情景下元素宽高的获取实现代码
2011/09/13 Javascript
javascript游戏开发之《三国志曹操传》零部件开发(三)情景对话中仿打字机输出文字
2013/01/23 Javascript
IE6下拉框图层问题探讨及解决
2014/01/03 Javascript
使用Node.js为其他程序编写扩展的基本方法
2015/06/23 Javascript
javascript实现禁止鼠标滚轮事件
2015/07/24 Javascript
Jquery基础教程之DOM操作
2015/08/19 Javascript
JavaScript+CSS实现的可折叠二级菜单实例
2016/02/29 Javascript
Vue.js父与子组件之间传参示例
2017/02/28 Javascript
JQueryMiniUI按照时间进行查询的实现方法
2017/06/07 jQuery
JavaScript面向对象继承原理与实现方法分析
2018/08/09 Javascript
实现elementUI表单的全局验证的方法步骤
2019/04/29 Javascript
Vue动态生成表格的行和列
2019/07/18 Javascript
浅析我对JS延迟异步脚本的思考
2020/10/12 Javascript
在vue项目中promise解决回调地狱和并发请求的问题
2020/11/09 Javascript
详解Python3 中hasattr()、getattr()、setattr()、delattr()函数及示例代码数
2018/04/18 Python
python for和else语句趣谈
2019/07/02 Python
Pytorch之parameters的使用
2019/12/31 Python
websocket+sockjs+stompjs详解及实例代码
2018/11/30 HTML / CSS
欧洲最大的品牌水上运动服装和设备在线零售商:Wuituit Outlet
2018/05/05 全球购物
找工作求职信
2014/07/07 职场文书
建筑管理专业求职信
2014/07/28 职场文书
防灾减灾标语
2014/10/07 职场文书
2014年学生会生活部工作总结
2014/11/07 职场文书
一年级数学上册复习计划
2015/01/17 职场文书
2015年城管执法工作总结
2015/07/23 职场文书
redis复制有可能碰到的问题汇总
2022/04/03 Redis