PHP实现对二维数组某个键排序的方法


Posted in PHP onSeptember 14, 2016

本文实例讲述了PHP实现对二维数组某个键排序的方法。分享给大家供大家参考,具体如下:

/**
 * 对查询结果集进行排序
 * @access public
 * @param array $list 查询结果
 * @param string $field 排序的字段名
 * @param string $sortby 排序类型 (asc正向排序 desc逆向排序 nat自然排序)
 * @return array
 */
  function list_sort_by($list, $field, $sortby = 'asc')
  {
    if (is_array($list))
    {
      $refer = $resultSet = array();
      foreach ($list as $i => $data)
      {
        $refer[$i] = &$data[$field];
      }
      switch ($sortby)
      {
        case 'asc': // 正向排序
          asort($refer);
          break;
        case 'desc': // 逆向排序
          arsort($refer);
          break;
        case 'nat': // 自然排序
          natcasesort($refer);
          break;
      }
      foreach ($refer as $key => $val)
      {
        $resultSet[] = &$list[$key];
      }
      return $resultSet;
    }
    return false;
  }
/**
 * 例子
 * 求:根据二维数组的id键值降序排列(也就是id越大的排在越前)?
 */
$list = array(
  0 => array(
    'id' => 1,
    'name' => '第一'
  ),
  1 => array(
    'id' => 3,
    'name' => '第三'
  ),
  2 => array(
    'id' => 2,
    'name' => '第二'
  ),
  3 => array(
    'id' => 4,
    'name' => '第四'
  ),
);
//解答
$new_list = list_sort_by($list, 'id', 'desc');
print_r($new_list);

运行结果如下:

Array
(
  [0] => Array
    (
      [id] => 4
      [name] => 第四
    )
  [1] => Array
    (
      [id] => 3
      [name] => 第三
    )
  [2] => Array
    (
      [id] => 2
      [name] => 第二
    )
  [3] => Array
    (
      [id] => 1
      [name] => 第一
    )
)

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

PHP 相关文章推荐
PHP入门
Oct 09 PHP
?算你??的 PHP 程式大小
Dec 06 PHP
从网上搜到的phpwind 0day的代码
Dec 07 PHP
Php无限级栏目分类读取的实现代码
Feb 19 PHP
ThinkPHP中关联查询实例
Dec 02 PHP
ThinkPHP通过AJAX返回JSON的两种实现方法
Dec 18 PHP
php实现插入排序
Mar 29 PHP
PHP模拟http请求的方法详解
Nov 09 PHP
PHP使用函数用法详解
Sep 30 PHP
php面向对象基础详解【星际争霸游戏案例】
Jan 23 PHP
PHP图像处理 imagestring添加图片水印与文字水印操作示例
Feb 06 PHP
php 的多进程操作实践案例分析
Feb 28 PHP
Laravel+jQuery实现AJAX分页效果
Sep 14 #PHP
php+ajax实现带进度条的上传图片功能【附demo源码下载】
Sep 14 #PHP
PHP自定义函数实现格式化秒的方法
Sep 14 #PHP
PHP经典算法集锦【经典收藏】
Sep 14 #PHP
微信支付的开发流程详解
Sep 13 #PHP
PHP仿微信多图片预览上传实例代码
Sep 13 #PHP
微信支付PHP SDK ―― 公众号支付代码详解
Sep 13 #PHP
You might like
php检查是否是ajax请求的方法
2015/04/16 PHP
PHP单态模式简单用法示例
2016/11/16 PHP
javascript 全等号运算符使用说明
2010/05/31 Javascript
JavaScript聚焦于第一个字段的代码
2010/10/15 Javascript
JQUERY对单选框(radio)操作的小例子
2013/04/25 Javascript
jQuery替换字符串(实例代码)
2013/11/13 Javascript
jQuery新的事件绑定机制on()示例应用
2014/07/18 Javascript
node.js中的fs.unlinkSync方法使用说明
2014/12/15 Javascript
浅析JavaScript 箭头函数 generator Date JSON
2016/05/23 Javascript
Angularjs 设置全局变量的方法总结
2016/10/20 Javascript
纯JS实现弹性导航条效果
2017/03/06 Javascript
Javascript实现信息滚动效果
2017/05/18 Javascript
微信小程序block的使用教程
2018/04/01 Javascript
Python多线程编程之多线程加锁操作示例
2018/09/06 Python
selenium 安装与chromedriver安装的方法步骤
2019/06/12 Python
Python音频操作工具PyAudio上手教程详解
2019/06/26 Python
python频繁写入文件时提速的方法
2019/06/26 Python
python 字符串常用方法汇总详解
2019/09/16 Python
python3 写一个WAV音频文件播放器的代码
2019/09/27 Python
使用python创建生成动态链接库dll的方法
2020/05/09 Python
keras中的backend.clip用法
2020/05/22 Python
python使用matplotlib绘制折线图的示例代码
2020/09/22 Python
Python如何使用vars返回对象的属性列表
2020/10/17 Python
用python实现一个简单的验证码
2020/12/09 Python
iframe跨域的几种常用方法
2019/11/11 HTML / CSS
台湾租车首选品牌:IWS艾维士租车
2019/05/03 全球购物
.NET常见笔试题集
2012/12/01 面试题
介绍一下mysql的日期和时间函数
2013/03/28 面试题
《赠汪伦》教学反思
2014/04/12 职场文书
意向协议书范本
2014/04/23 职场文书
装饰施工员岗位职责
2015/04/11 职场文书
在职证明书模板
2015/06/15 职场文书
oracle删除超过N天数据脚本的方法
2022/02/28 Oracle
CDPR谈《巫师》新作用虚幻5原因 称不会为Epic独占
2022/04/06 其他游戏
Go结合Gin导出Mysql数据到Excel表格
2022/08/05 Golang