PHP二维数组排序(感谢滔哥)

滔哥原创

/* 
                   _ooOoo_ 
                  o8888888o 
                  88" . "88 
                  (| -_- |) 
                  O\  =  /O 
               ____/`---‘\____ 
             .‘  \\|     |//  `. 
            /  \\|||  :  |||//  \ 
           /  _||||| -:- |||||-  \ 
           |   | \\\  -  /// |   | 
           | \_|  ‘‘\---/‘‘  |   | 
           \  .-\__  `-`  ___/-. / 
         ___`. .‘  /--.--\  `. . __ 
      ."" ‘<  `.___\_<|>_/___.‘  >‘"". 
     | | :  `- \`.;`\ _ /`;.`/ - ` : | | 
     \  \ `-.   \_ __\ /__ _/   .-` /  / 
======`-.____`-.___\_____/___.-`____.-‘====== 
                   `=---=‘ 
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 
         佛祖保佑       永无BUG 
*/   
array(array(),array());

$arr1=array(array(‘itemid‘=> 226,‘title‘=> ‘四中附近有一大厅出租‘,‘edittime‘=> 1409387090),
            array(‘itemid‘=> 311,‘title‘=> ‘四中西邻文华园小区楼房出租‘,‘edittime‘=> 1409272174),
            array(‘itemid‘=> 312,‘title‘=> ‘四中西邻文华园小区楼房出租2‘,‘edittime‘=> 1409272074),
            array(‘itemid‘=> 313,‘title‘=> ‘四中西邻文华园小区楼房出租3‘,‘edittime‘ => 1409271174)
        );

$arr2=array(array(‘itemid‘=> 226,‘title‘=> ‘四中附近有一大厅出租12‘,‘edittime‘=> 1409287090),
            array(‘itemid‘=> 314,‘title‘=> ‘四中西邻文华园小区楼房出租12‘,‘edittime‘=> 1409172174),
            array(‘itemid‘=> 310,‘title‘=> ‘四中西邻文华园小区楼房出租312‘,‘edittime‘ => 1309271174)
        );
$b=mylist(array_merge($arr1,$arr2));

print_r($b);

function mylist($array){
    $arr=array();
    $list=array();
    foreach($array as $v){
        $arr[$v[‘itemid‘]]=$v[‘edittime‘];
        $list[$v[‘itemid‘]]=$v;
    }
    arsort($arr);
    $newarr=array();
    foreach($arr as $k=>$v){
        $newarr[]=$list[$k];
    }
    return $newarr;
}

本人需求更改

/**
 * 按照指定键名对二维数组排序
 * $array  传过来的数组
 * $key     指定的键名
 * $type    指定的排序类型  asc  升序,desc 降序
 */
  function orderArray($array = array() ,$key = ‘id‘, $type = ‘asc‘)
  {
        $arr        = array();
        $list       = array();
        foreach($array as $v){
            $arr[$v[$key]]       = $v[$key];
            $list[$v[$key]]      = $v;
        }
        if($type == ‘asc‘){
        	asort($arr);
        }else{
        	arsort($arr);
        }
        
        $newarr     =array();
        foreach($arr as $k => $v){
            $newarr[]       =$list[$k];
        }
        return $newarr;
    }
 /**
    * 冒泡排序,如果二维数组中的元素不一致,可以使用次方法   add by  wangt
    *  $arr  要排序的数组
    *  $key  指定要排序的字段
    */
    function interpretSort( $arr = array() ,$key = ‘order‘)
	{
        $count  		= count($arr);
        if( $count <= 0 ) return false;
        for( $i = 0; $i < $count; $i ++ ){
                for( $j = $count - 1; $i < $j; $j --){
                        if( $arr[$j][$key] < $arr[$j-1][$key] ){
                                //交换相邻位置的值
                                $tmp 		= $arr[$j];
                                $arr[$j] 	= $arr[$j-1];
                                $arr[$j-1]  = $tmp;
                        }
                }
        }
        return $arr;
	}

简单的二维数组按照指定字段排序

echo "<pre>";
    $arr=array(
        ‘aaa‘=>array(
            ‘age‘=>32,
            ‘name‘=>‘张三‘
        ),
        ‘bbb‘=>array(
            ‘age‘=>12,
            ‘name‘=>‘李四‘
        ),
        ‘ccc‘=>array(
            ‘age‘=>25,
            ‘name‘=>‘赵六‘
        )
    );
    function paixu($a,$b){
        return $b[‘age‘]-$a[‘age‘];
    }
    uasort($arr,‘paixu‘);
    print_r($arr);

要排序的key 有重复值

function RorderArray( $array = [], $key = ‘‘, $order = ‘asc‘ ){
$sort = $order == ‘asc‘ ? ‘SORT_ASC‘ : ‘SORT_DESC‘;
$arrSort = array();
foreach($array AS $uniqid => $row){
  foreach($row AS $k=>$value){
    $arrSort[$k][$uniqid] = $value;
  }
}
array_multisort($arrSort[$key], constant($sort), $array);
  return $array;
} 
时间: 2024-11-10 17:14:57

PHP二维数组排序(感谢滔哥)的相关文章

PHP_I love U之(1)php衣食父母:使用usort()函数为二维数组排序

<?php //PHP_I love U之(1)php衣食父母:使用usort()函数为二维数组排序 //PHP语言中使用usort()函数 为 二维数组排序: // [][]==  a[][1]= 长度; a[][2] = views点击数 $AAlong=10; //变量$AAlong 定义数组长度 //for ($i=0;$i<$AAlong;++$i)  //多维数组扩展时使用- //{ for($j=0;$j<$AAlong;++$j) //for j22  //这段给数组(用

写个函数用来对二维数组排序

29.写个函数用来对二维数组排序(新浪) Foreach有两种语法: 语法一:foreach($arr as $value){ Echo $value; } 语法一:foreach($arr as $key=>$value){ Echo $key . "=>" . $value; } 使用foreach遍历二维数组 与数组排序有关的函数: ?  sort():对数组元素的值升序排列,不保留索引关系 ?  rsort():对数组元素的值降序排列,不保留索引关系. ?  aso

写一个二维数组排序算法函数,能够具有通用性,可以调用php内置函数

下面代码没有认真看: <?php //二维数组排序, $arr是数据,$keys是排序的健值,$order是排序规则,1是升序,0是降序 function array_sort($arr, $keys, $order = 0) { if (!is_array($arr)) { return false; } $keysvalue = array(); foreach ($arr as $key => $val) { $keysvalue[$key] = $val[$keys]; } if ($

PHP 二维数组排序 可以按指定 键值排序

<?php header("Content-Type:utf-8"); $arr = array( 0 => array( 'name' => '国际原油价格', 'url_pinyin' => 'kucun', ), 1 => array( 'name' => '原油', 'url_pinyin' => 'jiage', ), 2 => array( 'name' => '原油价格', 'url_pinyin' => 'yu

js sort 二维数组排序的用法小结

最近在搞js 排序的问题,因为数据库排序太耗资源,如果能转移到客户端去排序,能大大D减少服务器内存消耗.客户端的话,除了js,就是as了,可惜我as学得太烂,所以只能选择js来研究研究了...经过我的测试,js内置方法sort的效率非常高 我们知道在js中默认提供了sort函数,但是这个函数默认是按照数组内容的ascii码升序进行排列的,如果我们要对二维数组排序要如何做呢?在php中是有multi_sort函数可供调用的,但是在js中似乎没有这种函数,但是没关系 ,因为js的sort函数其实也提

php基础篇-二维数组排序 array_multisort

原文:php基础篇-二维数组排序 array_multisort 对2维数组或者多维数组排序是常见的问题,在php中我们有个专门的多维数组排序函数,下面简单介绍下: array_multisort(array1,sorting order, sorting type,array2,array3..)是对多个数组或多维数组进行排序的函数. array1 必需.规定输入的数组. sorting order 可选.规定排列顺序.可能的值是 SORT_ASC 和 SORT_DESC. sorting t

JS:二维数组排序和获取子级元素

JS:二维数组排序和获取子级元素 1. 二维数组排序 1.按数值排序 1 var arr = [[1, 2, 3], [7, 2, 3], [3, 2, 3]]; 如果我们要按每个子数组的第一列来排序要如何做呢,我们可以定义一个比较函数: 1 arr.sort(function(x, y){ 2 return x[0] – y[0]; 3 }); 这里的比较函数的作用是什么呢?其实是数组依次将数组元素复制给x,y,比如首先将arr[0]赋给x,arr[1]赋给y,然后用x[0] – y[0],根

php基础篇-二维数组排序姐妹篇

前面介绍了php多维数组排序的一个函数array_multisort() ,想了解的人可以点击 二维数组排序 array_multisort 下面介绍下不适用array_multisort()进行多维数组的排序. 这里介绍下2个php排序函数,一个是asort,一个是arsort. asort(array,sorttype) 函数对数组进行排序并保持索引关系.主要用于对那些单元顺序很重要的结合数组进行排序. 可选的第二个参数包含了附加的排序标识. SORT_REGULAR - 默认.以它们原来的

PHP二维数组排序(list_order)

/** * 对二维数组进行排序 * 模拟 数据表记录按字段排序 * * <code> * @list_order($list, $get['orderKey'], $get['orderType']); * </code> * @param array $array 要排序的数组 * @param string $orderKey 排序关键字/字段 * @param string $orderType 排序方式,'asc':升序,'desc':降序 * @param string