• 技术文章 >php教程 >PHP源码

    php 二维数组排序实现程序

    2016-06-08 17:24:18原创589
    在php中对二维数组排序我们可以直接使用array_multisort()函数即可实现,同时我也收藏了一些自定对二维数组排序代码大家可参考。

    先来看array_multisort()函数

    代码如下 复制代码

    $ar = array(
    array("10", 11, 100, 100, "a"),
    array( 1, 2, "2", 3, 1)
    );
    array_multisort($ar[0], SORT_ASC, SORT_STRING,
    $ar[1], SORT_NUMERIC, SORT_DESC);
    var_dump($ar);
    ?>

    本例中在排序后,第一个数组将变成 "10",100,100,11,"a"(被当作字符串以升序排列)。第二个数组将包含 1, 3, "2", 2, 1(被当作数字以降序排列)。

    代码如下 复制代码

    array(2) {
    [0]=> array(5) {
    [0]=> string(2) "10"
    [1]=> int(100)
    [2]=> int(100)
    [3]=> int(11)
    [4]=> string(1) "a"
    }
    [1]=> array(5) {
    [0]=> int(1)
    [1]=> int(3)
    [2]=> string(1) "2"
    [3]=> int(2)
    [4]=> int(1)
    }
    }

    上面的用现成的函数感觉不是很方便,下面我来推荐一个用户自定义的函数

    代码如下 复制代码
    function array_sort($arr,$keys,$type='asc'){
    $keysvalue = $new_array = array();
    foreach ($arr as $k=>$v){
    $keysvalue[$k] = $v[$keys];
    }
    if($type == 'asc'){
    asort($keysvalue);
    }else{
    arsort($keysvalue);
    }
    reset($keysvalue);
    foreach ($keysvalue as $k=>$v){
    $new_array[$k] = $arr[$k];
    }
    return $new_array;
    }

    测试(它可以对二维数组按照指定的键值进行排序,也可以指定升序或降序排序法(默认为升序),

    用法示例:

    代码如下 复制代码

    $array = array(
    array('name'=>'手机','brand'=>'诺基亚','price'=>1050),
    array('name'=>'笔记本电脑','brand'=>'lenovo','price'=>4300),
    array('name'=>'剃须刀','brand'=>'飞利浦','price'=>3100),
    array('name'=>'跑步机','brand'=>'三和松石','price'=>4900),
    array('name'=>'手表','brand'=>'卡西欧','price'=>960),
    array('name'=>'液晶电视','brand'=>'索尼','price'=>6299),
    array('name'=>'激光打印机','brand'=>'惠普','price'=>1200)
    );

    $ShoppingList = array_sort($array,'price');
    print_r($ShoppingList);


    冒泡法

    代码如下 复制代码

    function arraysort($data, $order = 'asc') {
    //asc升序 desc降序
    $temp = array ();
    $count = count ( $data );
    if ($count <= 0)
    return false; //传入的数据不正确
    if ($order == 'asc') {
    for($i = 0; $i < $count; $i ++) {
    for($j = $count - 1; $j > $i; $j --) {
    if ($data [$j] < $data [$j - 1]) {
    //交换两个数据的位置
    $temp = $data [$j];
    $data [$j] = $data [$j - 1];
    $data [$j - 1] = $temp;
    }
    }
    }
    } else {
    for($i = 0; $i < $count; $i ++) {
    for($j = $count - 1; $j > $i; $j --) {
    if ($data [$j] > $data [$j - 1]) {
    $temp = $data [$j];
    $data [$j] = $data [$j - 1];
    $data [$j - 1] = $temp;
    }
    }
    }
    }

    return $data;
    }

    $data = array (7, 5, 3, 8, 9, 1, 5, 3, 1, 24, 3, 87, 0, 33, 1, 12, 34, 54, 66, 32 );
    var_dump ( arraysort ( $data ) ); //升序
    echo ('
    ');
    var_dump ( arraysort ( $data ,'desc') );//降序

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:nbsp array gt quot data
    上一篇:php中rmdir删除非空目录程序代码 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • 收藏PHP常用自定义函数• 检测移动设备的php代码(手机访问)• php 列出目录与删除目录实例代码• php实用图片水印效果代码• PHP禁止图片文件的被盗链函数
    1/1

    PHP中文网