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 相关文章推荐
dedecms 批量提取第一张图片最为缩略图的代码(文章+软件)
Oct 29 PHP
php &amp;&amp; 逻辑与运算符使用说明
Mar 04 PHP
php压缩多个CSS为一个css的代码并缓存
Apr 21 PHP
php实现建立多层级目录的方法
Jul 19 PHP
php session 写入数据库
Feb 13 PHP
PHP连接数据库实现注册页面的增删改查操作
Mar 27 PHP
浅析Yii2 gridview实现批量删除教程
Apr 22 PHP
Zend Framework过滤器Zend_Filter用法详解
Dec 09 PHP
php PDO判断连接是否可用的实现方法
Apr 03 PHP
老生常谈php中传统验证与thinkphp框架(必看篇)
Jun 10 PHP
关于Curl在Swoole协程中的解决方案详析
Sep 12 PHP
Laravel 自带的Auth验证登录方法
Sep 30 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
生成ubuntu自动切换壁纸xml文件的php代码
2010/07/17 PHP
PHP错误抑制符(@)导致引用传参失败Bug的分析
2011/05/02 PHP
关于初学PHP时的知识积累总结
2013/06/07 PHP
PHP的mysqli_stat()函数讲解
2019/01/23 PHP
PHP进阶学习之依赖注入与Ioc容器详解
2019/06/19 PHP
PPK 谈 JavaScript 的 this 关键字 [翻译]
2009/09/29 Javascript
JavaScript 计算图片加载数量的代码
2011/01/01 Javascript
Ajax局部更新导致JS事件重复触发问题的解决方法
2014/10/14 Javascript
纯javascript模仿微信打飞机小游戏
2015/08/20 Javascript
js实现可折叠展开的手风琴菜单效果
2015/09/07 Javascript
第一次接触JS require.js模块化工具
2016/04/17 Javascript
JavaScript数组实现数据结构中的队列与堆栈
2016/05/26 Javascript
AngularJS HTML DOM详解及示例代码
2016/08/17 Javascript
Angular2 多级注入器详解及实例
2016/10/30 Javascript
jQuery中过滤器的基本用法示例
2017/10/11 jQuery
JS原型与继承操作示例
2019/05/09 Javascript
关于vue里页面的缓存详解
2019/11/04 Javascript
简单了解JavaScript弹窗实现代码
2020/05/07 Javascript
Python中的Classes和Metaclasses详解
2015/04/02 Python
scrapy爬虫完整实例
2018/01/25 Python
python爬虫面试宝典(常见问题)
2018/03/02 Python
python使用PIL给图片添加文字生成海报示例
2018/08/17 Python
对sklearn的使用之数据集的拆分与训练详解(python3.6)
2018/12/14 Python
浅谈python 读excel数值为浮点型的问题
2018/12/25 Python
Python实现图片批量加入水印代码实例
2019/11/30 Python
python“静态”变量、实例变量与本地变量的声明示例
2020/11/13 Python
python中函数返回多个结果的实例方法
2020/12/16 Python
HTML文本属性&amp;颜色控制属性的实现
2019/12/17 HTML / CSS
三字经教学反思
2014/04/26 职场文书
学校周年庆活动方案
2014/08/22 职场文书
夫妻双方自愿离婚协议书怎么写
2014/12/01 职场文书
寻找成龙观后感
2015/06/12 职场文书
2016党员发展对象培训心得体会
2016/01/08 职场文书
Python - 10行代码集2000张美女图
2021/05/23 Python
用 Python 定义 Schema 并生成 Parquet 文件详情
2021/09/25 Python
动画「半妖的夜叉姬」新BD特典图公开
2022/03/22 日漫