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 获得汉字拼音首字母的函数
Aug 01 PHP
将文件夹压缩成zip文件的php代码
Dec 14 PHP
PHP支持多种格式图片上传(支持jpg、png、gif)
Nov 03 PHP
判断php数组是否为索引数组的实现方法
Jun 13 PHP
thinkphp的URL路由规则与配置实例
Nov 26 PHP
UPUPW 更新 64 位 Apache 系列 PHP 7.0 正式版
Dec 08 PHP
PHP爬虫之百万级别知乎用户数据爬取与分析
Jan 22 PHP
php中10个不同等级压缩优化图片操作示例
Nov 14 PHP
php 5.4 全新的代码复用Trait详解
Jan 05 PHP
PHP实现批量删除(封装)
Apr 28 PHP
ThinkPHP框架表单验证操作方法
Jul 19 PHP
PHP使用mysqli同时执行多条sql查询语句的实例
Mar 22 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中的strtr函数使用介绍(str_replace)
2011/10/20 PHP
PHP观察者模式示例【Laravel框架中有用到】
2018/06/15 PHP
编辑浪子版表单验证类
2007/05/12 Javascript
style、 currentStyle、 runtimeStyle区别分析
2010/08/01 Javascript
如何在一个页面显示多个百度地图
2013/04/07 Javascript
Node.js中使用事件发射器模式实现事件绑定详解
2014/08/15 Javascript
JavaScript参数个数可变的函数举例说明
2014/10/10 Javascript
jQuery实现类似淘宝网图片放大效果的方法
2015/07/08 Javascript
超赞的jQuery图片滑块动画特效代码汇总
2016/01/25 Javascript
JavaScript数组的栈方法与队列方法详解
2016/05/26 Javascript
基于JavaScript实现Tab选项卡切换效果
2016/11/24 Javascript
详解webpack+es6+angular1.x项目构建
2017/05/02 Javascript
AjaxUpLoad.js实现文件上传功能
2018/03/02 Javascript
解决vue无法设置滚动位置的问题
2018/10/07 Javascript
vue自定义标签和单页面多路由的实现代码
2020/05/03 Javascript
浅谈vue中$bus的使用和涉及到的问题
2020/07/28 Javascript
[05:36]DOTA2 2015国际邀请赛中国区预选赛第四日TOP10
2015/05/29 DOTA
修改Python的pyxmpp2中的主循环使其提高性能
2015/04/24 Python
Pythont特殊语法filter,map,reduce,apply使用方法
2016/02/27 Python
Windows平台Python连接sqlite3数据库的方法分析
2017/07/12 Python
Python字典操作详细介绍及字典内建方法分享
2018/01/04 Python
python3模块smtplib实现发送邮件功能
2018/05/22 Python
使用python实现ftp的文件读写方法
2019/07/02 Python
python制作朋友圈九宫格图片
2019/11/03 Python
PyTorch中Tensor的数据统计示例
2020/02/17 Python
通过代码实例了解Python sys模块
2020/09/14 Python
详解HTML5中的manifest缓存使用
2015/09/09 HTML / CSS
什么是静态路由,其特点是什么?什么是动态路由,其特点是什么?
2013/07/26 面试题
公司授权委托书
2014/04/04 职场文书
超市开店计划书
2014/04/26 职场文书
营销部内勤岗位职责
2014/04/30 职场文书
航空学院求职信
2014/06/11 职场文书
企业仓管员岗位职责
2014/06/15 职场文书
小学优秀班主任材料
2014/12/17 职场文书
Python Flask搭建yolov3目标检测系统详解流程
2021/11/07 Python
MySQL 条件查询的常用操作
2022/04/28 MySQL