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 相关文章推荐
使用MaxMind 根据IP地址对访问者定位
Oct 09 PHP
php中经典方法实现判断多维数组是否为空
Oct 23 PHP
php读取mysql中文数据出现乱码的解决方法
Aug 16 PHP
PHP中防止SQL注入方法详解
Dec 25 PHP
PHP5多态性与动态绑定介绍
Apr 03 PHP
php根据一个给定范围和步进生成数组的方法
Jun 19 PHP
PHP中文竖排转换实现方法
Oct 23 PHP
PHP二维数组矩形转置实例
Jul 20 PHP
微信随机生成红包金额算法php版
Jul 21 PHP
Yii针对添加行的增删改查操作示例
Oct 18 PHP
PHP实现数组的笛卡尔积运算示例
Dec 15 PHP
PHP常量define和const的区别详解
May 18 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
asp.net 30分钟掌握无刷新 Repeater
2011/09/16 Javascript
js验证整数加保留小数点的简单实例
2013/12/02 Javascript
jQuery判断checkbox是否选中的小例子
2013/12/02 Javascript
原生javascript实现隔行换色
2015/01/04 Javascript
JavaScript实现的简单烟花特效代码
2015/10/20 Javascript
轻松搞定jQuery.noConflict()
2016/02/15 Javascript
前端实现文件的断点续传(前端文件提交+后端PHP文件接收)
2016/11/04 Javascript
详解Js模板引擎(TrimPath)
2016/11/22 Javascript
jQuery Easyui datagrid行内实现【添加】、【编辑】、【上移】、【下移】
2016/12/19 Javascript
Vue from-validate 表单验证的示例代码
2017/09/26 Javascript
angularjs手动识别字符串中的换行符方法
2018/10/02 Javascript
Node中对非阻塞I/O、事件循环的知识点总结
2020/01/05 Javascript
JavaScript如何实现图片处理与合成
2020/05/29 Javascript
[56:13]DOTA2-DPC中国联赛定级赛 LBZS vs Phoenix BO3第一场 1月10日
2021/03/11 DOTA
Python中的pass语句使用方法讲解
2015/05/14 Python
Python对文件和目录进行操作的方法(file对象/os/os.path/shutil 模块)
2017/05/08 Python
Python编程之变量赋值操作实例分析
2017/07/24 Python
Python获取CPU、内存使用率以及网络使用状态代码
2018/02/08 Python
对python Tkinter Text的用法详解
2018/10/11 Python
python粘包问题及socket套接字编程详解
2019/06/29 Python
使用Python实现分别输出每个数组
2019/12/06 Python
Python3 hashlib密码散列算法原理详解
2020/03/30 Python
微信浏览器取消缓存的方法
2015/03/28 HTML / CSS
多视角3D可旋转的HTML5 Logo动画
2016/03/02 HTML / CSS
俄罗斯家居用品购物网站:Евродом
2020/11/21 全球购物
解释DataSet(ds) 和 ds as DataSet 的含义
2014/07/27 面试题
远程调用的原理
2014/07/05 面试题
应用数学自荐书范文
2013/11/24 职场文书
公司活动方案范文
2014/03/06 职场文书
小区物业门卫岗位职责
2014/04/10 职场文书
财务工作检讨书
2014/10/29 职场文书
2015年党性分析材料
2014/12/19 职场文书
五好家庭申报材料
2014/12/20 职场文书
琅琊山导游词
2015/02/05 职场文书
Java中CyclicBarrier和CountDownLatch的用法与区别
2021/08/23 Java/Android
python实现层次聚类的方法
2021/11/01 Python