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的无限分类实现想法~
Jan 02 PHP
phpmyadmin里面导入sql语句格式的大量数据的方法
Jun 05 PHP
删除无限分类并同时删除它下面的所有子分类的方法
Aug 08 PHP
PHP优于Node.js的五大理由分享
Sep 15 PHP
利用php获取服务器时间的实现代码
Jun 07 PHP
PHP数组排序之sort、asort与ksort用法实例
Sep 08 PHP
php求一个网段开始与结束IP地址的方法
Jul 09 PHP
PHP数组操作类实例
Jul 11 PHP
thinkPHP2.1自定义标签库的导入方法详解
Jul 20 PHP
phpStudy中升级MySQL版本到5.7.17的方法步骤
Aug 03 PHP
什么是PHP7中的孤儿进程与僵尸进程
Apr 14 PHP
php实现分页功能的详细实例方法
Sep 29 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 cookis创建实现代码
2009/03/16 PHP
php文件夹的创建与删除方法
2015/01/24 PHP
php删除文本文件中重复行的方法
2015/04/28 PHP
PHP连接MSSQL方法汇总
2016/02/05 PHP
Yii2实现跨mysql数据库关联查询排序功能代码
2017/02/10 PHP
Laravel学习教程之从入口到输出过程详解
2017/08/27 PHP
thinkPHP3.2使用RBAC实现权限管理的实现
2019/08/27 PHP
combox改进版 页面原型参考dojo的,比网上jQuery的那些combox功能强,代码更小
2010/04/15 Javascript
通过jQuery源码学习javascript(三)
2012/12/27 Javascript
JavaScript多并发问题如何处理
2015/10/28 Javascript
解决js函数闭包内存泄露问题的办法
2016/01/25 Javascript
AngularJS中实现用户访问的身份认证和表单验证功能
2016/04/21 Javascript
深入理解Angularjs中$http.post与$.post
2017/05/19 Javascript
详解如何用webpack打包一个网站应用项目
2017/07/12 Javascript
如何将 jQuery 从你的 Bootstrap 项目中移除(取而代之使用Vue.js)
2017/07/17 jQuery
vue router下的html5 history在iis服务器上的设置方法
2017/10/18 Javascript
分析JS单线程异步io回调的特性
2017/12/01 Javascript
从vue源码看props的用法
2019/01/09 Javascript
Python的加密模块md5、sha、crypt使用实例
2014/09/28 Python
Linux中安装Python的交互式解释器IPython的教程
2016/06/13 Python
Python中shape计算矩阵的方法示例
2017/04/21 Python
Django2.1集成xadmin管理后台所遇到的错误集锦(填坑)
2018/12/20 Python
解决Pyinstaller 打包exe文件 取消dos窗口(黑框框)的问题
2019/06/21 Python
python简单区块链模拟详解
2019/07/03 Python
OpenCV里的imshow()和Matplotlib.pyplot的imshow()的实现
2019/11/25 Python
解决tensorflow打印tensor有省略号的问题
2020/02/04 Python
Python根据指定文件生成XML的方法
2020/06/29 Python
详解使用canvas保存网页为pdf文件支持跨域
2018/11/23 HTML / CSS
Hotels.com拉丁美洲:从豪华酒店到经济型酒店的预定优惠和折扣
2019/12/09 全球购物
美国相机和电子产品零售商:Beach Camera
2020/11/26 全球购物
投标承诺函范文
2015/01/21 职场文书
运动会5000米加油稿
2015/07/21 职场文书
安全教育的主题班会
2015/08/13 职场文书
python实现简单的井字棋
2021/05/26 Python
Vue如何清空对象
2022/03/03 Vue.js
Redis 的查询很快的原因解析及Redis 如何保证查询的高效
2022/03/16 Redis