php一维二维数组键排序方法实例总结


Posted in PHP onNovember 13, 2014

本文实例总结了php一维二维数组键排序方法。分享给大家供大家参考。具体方法如下:

在php中数组排序一直是一个老生常谈的问题,下面我们来集中讲一下关于在php中一维数组与二维数组排序的实现程序,相信对大家有一定的参考借鉴价值.

功能:对数组进行重新排序.

说明:冒泡排序 (一维数组)(二维数组某个健排序)

两两比较待排序数据元素的大小,发现两个数据元素的次序相反时即进行交换,直到没有反序的数据元素为止

设想被排序的数组R[1..N] 垂直竖立,将每个数据元素看作有重量的气泡,从下往上扫描数组,凡扫描违反原则的轻气泡,就使其向上”漂浮”.如此反复进行.直到最后任何两个气都是轻者在上,重者在下为止.

/**

     * 冒泡排序 (一维数组)(二维数组某个健排序)

     * 两两比较待排序数据元素的大小,发现两个数据元素的次序相反时即进行交换,直到没有反序的数据元素为止

     * 设想被排序的数组R[1..N] 垂直竖立,将每个数据元素看作有重量的气泡,从下往上扫描数组,凡扫描违反原则的轻气泡,就使其向上"漂浮".如此反复进行.

     * 直到最后任何两个气都是轻者在上,重者在下为止.

 */

function bubble_sort($array,$key=null) {

        $count = count($array);

        if($count < 0) {

            return false;

        }

        for($i = 0; $i < $count; $i++) {

            for($j = $count - 1; $j > $i; $j--) {

                if($key && isset($array[$key])){//二维数组健存在

                    if($array[$j][$key] < $array[$j - 1][$key]) {

                        $tmp = $array[$j];

                        $array[$j] = $array[$j - 1];

                        $array[$j - 1] = $tmp;

                    }

                }else{ //一维数组

                    if($array[$j] < $array[$j - 1]) {

                        $tmp = $array[$j];

                        $array[$j] = $array[$j - 1];

                        $array[$j - 1] = $tmp;

                    }

                }

            }

        }

        return $array;

}

array_multisort排序使用方法

array_multisort() 对二位数组按照指定键值排序的使用方法

本例中定义了一个名为 $data 的二维数组,然后对它进行排序,方法如下

$data[] = array('volume' => 67, 'edition' => 2); 

$data[] = array('volume' => 86, 'edition' => 1); 

$data[] = array('volume' => 85, 'edition' => 6); 

$data[] = array('volume' => 98, 'edition' => 2); 

$data[] = array('volume' => 86, 'edition' => 6); 

$data[] = array('volume' => 67, 'edition' => 7); 

  

// 取得列的列表 

foreach ($data as $key => $row) { 

    $volume[$key]  = $row['volume']; 

    $edition[$key] = $row['edition']; 

} 

  

// 将数据根据 volume 降序排列,根据 edition 升序排列 

// 把 $data 作为最后一个参数,以通用键排序 

array_multisort($volume, SORT_DESC, $edition, SORT_ASC, $data); 

print_r($data);

执行后打印结果如下:

Array 

( 

    [0] => Array 

        ( 

            [volume] => 98 

            [edition] => 2 

        ) 

    [1] => Array 

        ( 

            [volume] => 86 

            [edition] => 1 

        ) 

    [2] => Array 

        ( 

            [volume] => 86 

            [edition] => 6 

          

    [3] => Array 

        ( 

            [volume] => 85 

            [edition] => 6 

        ) 

    [4] => Array 

        ( 

            [volume] => 67 

            [edition] => 2 

        ) 

    [5] => Array 

        ( 

            [volume] => 67 

            [edition] => 7 

        ) 

)

一维数组排序我们只要使用sort()就可以了,相对应的 asort($arr); 函数,是按键值排序,且维持原有的键值关系。

同样原理,rsort(); arsort(); krsort(); 函数除了排序是按降序排列外,其它与sort(); rsort(); ksort(); 相同。

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

PHP 相关文章推荐
php基础知识:类与对象(2) 自动加载对象
Dec 13 PHP
php strstr查找字符串中是否包含某些字符的查找函数
Jun 03 PHP
php中如何使对象可以像数组一样进行foreach循环
Aug 09 PHP
ECMall支持SSL连接邮件服务器的配置方法详解
May 19 PHP
php实现读取超大文件的方法
Jul 28 PHP
ThinkPHP中URL路径访问与模块控制器之间的关系
Aug 23 PHP
php约瑟夫问题解决关于处死犯人的算法
Mar 23 PHP
PHP 根据key 给二维数组分组
Dec 09 PHP
php结合redis高并发下发帖、发微博的实现方法
Dec 15 PHP
详解php与ethereum客户端交互
Apr 28 PHP
laravel-admin自动生成模块,及相关基础配置方法
Oct 08 PHP
php 下 html5 XHR2 + FormData + File API 上传文件操作实例分析
Feb 28 PHP
php生成随机颜色的方法
Nov 13 #PHP
javascript some()函数用法详解
Nov 13 #PHP
php获取随机数组列表的方法
Nov 13 #PHP
php中chdir()函数用法实例
Nov 13 #PHP
php之readdir函数用法实例
Nov 13 #PHP
dedecms中使用php语句指南
Nov 13 #PHP
php 使用file_get_contents读取大文件的方法
Nov 13 #PHP
You might like
php select,radio和checkbox默认选择的实现方法
2010/05/15 PHP
深入PHP nl2br()格式化输出的详解
2013/06/05 PHP
你不知道的文件上传漏洞php代码分析
2016/09/29 PHP
php如何修改SESSION的生存存储时间的实例代码
2017/07/05 PHP
[原创]PHP实现生成vcf vcard文件功能类定义与使用方法详解【附demo源码下载】
2017/09/02 PHP
PHP实现一个多功能购物网站的案例
2017/09/13 PHP
测试JavaScript字符串处理性能的代码
2009/12/07 Javascript
javascript面向对象的方式实现的弹出层效果代码
2010/01/28 Javascript
关于在IE下的一个安全BUG --可用于跟踪用户的系统鼠标位置
2013/04/17 Javascript
jquery实现简单的拖拽效果实例兼容所有主流浏览器
2013/06/21 Javascript
JS命名空间的另一种实现
2013/08/09 Javascript
如何书写高质量jQuery代码(使用jquery性能问题)
2014/06/30 Javascript
javascript的tab切换原理与效果实现方法
2015/01/10 Javascript
JS获取图片高度宽度的方法分享
2015/04/17 Javascript
jQuery构造函数init参数分析续
2015/05/13 Javascript
基于javascript实现图片预加载
2016/01/05 Javascript
js console.log打印对像与数组用法详解
2016/01/21 Javascript
js模糊查询实例分享
2016/12/26 Javascript
Angular2开发环境搭建教程之VS Code
2017/12/15 Javascript
JavaScript ES6常用基础知识总结
2019/02/09 Javascript
JS如何在不同平台实现多语言方式
2020/07/16 Javascript
解决vue-router 切换tab标签关闭时缓存问题
2020/07/22 Javascript
Python中用于检查英文字母大写的isupper()方法
2015/05/19 Python
关于Python正则表达式 findall函数问题详解
2018/03/22 Python
python 顺时针打印矩阵的超简洁代码
2018/11/14 Python
python 微信好友特征数据分析及可视化
2020/01/07 Python
Python装饰器结合递归原理解析
2020/07/02 Python
想学画画?python满足你!
2020/12/24 Python
巴西最好的男鞋:Rafarillo
2018/05/25 全球购物
西班牙手机之家:Phone House
2018/10/18 全球购物
eDreams葡萄牙:全球最大的在线旅行社之一
2019/04/15 全球购物
入党积极分子个人总结
2015/03/02 职场文书
2015年依法行政工作总结
2015/04/29 职场文书
单位计划生育责任书
2015/05/09 职场文书
金砖之国观后感
2015/06/11 职场文书
2016年秋季开学典礼新闻稿
2015/11/25 职场文书