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;
}
/**
* 冒泡排序,如果二维数组中的元素不一致,可以使用次方法
* $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;
}
PHP二维数组排序(感谢滔哥)的更多相关文章
- PHP二维数组排序(感谢滔哥lvtao.net)
滔哥原创 /* _ooOoo_ o8888888o 88" . "88 (| -_- |) O\ = /O ____/`---'\____ .' \\| |// `. / \\|| ...
- JS二维数组排序组合
需求是这样的:http://q.cnblogs.com/q/29093/ 这里简述一下: 现在有一个不确定长度的数组.比如:var temp=[["Fu","Hai&qu ...
- PHP二维数组排序(list_order)
/** * 对二维数组进行排序 * 模拟 数据表记录按字段排序 * * <code> * @list_order($list, $get['orderKey'], $get['orderT ...
- PHP array_multisort() 函数详解 及 二维数组排序(模拟数据表记录按字段排序)
一.先看最简单的情况. 有两个数组: $arr1 = array(1, 9, 5); $arr2 = array(6, 2, 4); array_multisort($arr1, $arr2); pr ...
- php基础篇-二维数组排序 array_multisort
原文:php基础篇-二维数组排序 array_multisort 对2维数组或者多维数组排序是常见的问题,在php中我们有个专门的多维数组排序函数,下面简单介绍下: array_multisort(a ...
- PHP 二维数组排序保持键名不变
对二维数组指定的键名排序,首先大家想到的是array_multisort函数,关于array_multisort的用法我之前也写了一篇废话不多言,我们看个实例: <?php $data = ar ...
- 一个不错的PHP二维数组排序函数简单易用存用
一个不错的PHP二维数组排序函数简单易用存用 传入数组,传入排序的键,传入排序顺序 public function array_sort($arr,$keys,$type='asc') { $keys ...
- JS:二维数组排序和获取子级元素
JS:二维数组排序和获取子级元素 1. 二维数组排序 1.按数值排序 var arr = [[1, 2, 3], [7, 2, 3], [3, 2, 3]]; 如果我们要按每个子数组的第一列来排序要如 ...
- php实现二维数组排序array_multisort($ages, SORT_DESC, $home)函数
1.sql查询排序参数是order by,那么php进行排序呢 可以参考array_multisrot函数 //php进行二维数组排序 -xzz1009 foreach($home as $home) ...
随机推荐
- P1345 [USACO5.4]奶牛的电信Telecowmunication
P1345 [USACO5.4]奶牛的电信Telecowmunication 题目描述 农夫约翰的奶牛们喜欢通过电邮保持联系,于是她们建立了一个奶牛电脑网络,以便互相交流.这些机器用如下的方式发送电邮 ...
- linux_远程连接
为什么要远程连接linux服务器? 温度.湿度.电力各种影响,有的企业使用阿里云服务器,更加接触不到机房,所有需要通过远程连接服务器来进行管理 IP地址? 互联网上的计算机,都会有一个唯一的32位地址 ...
- navicat的简单使用
navicat的简单使用: 连接: 输入ip地址,端口,用户名,密码 新建数据库: 数据库名,字符编码一定要选择utf-8 新建表: 字段,约束条件 双击表名,自己打开表,点击空列,添加数据,ctl+ ...
- Web Magic设计思想
1.1 设计思想 1. 一个框架,一个领域 一个好的框架必然凝聚了领域知识.WebMagic的设计参考了业界最优秀的爬虫Scrapy,而实现则应用了HttpClient.Jsoup等Java世界最成熟 ...
- 用Python实现几种排序算法
#coding=utf-8 # 1 快速排序算法 def qksort(list): if len(list)<=1: return list else: pivot = list[0] les ...
- 流API--缩减操作
在Stream流操作中,比如说min(),max(),count()方法,这几个操作都会将一个流缩减成一个值,流API将这些操作称为特例缩减.另外,流API同时泛华了缩减这种概念,提供了reduce( ...
- 基于 xorm 的服务端框架 XGoServer
作者:林冠宏 / 指尖下的幽灵 掘金:https://juejin.im/user/587f0dfe128fe100570ce2d8 博客:http://www.cnblogs.com/linguan ...
- 10个实用的 Linux 网络和监控命令[转]
本文列出了10个基础的每个Linux用户都应该知道的网络和监控命令.网络和监控命令类似于这些: hostname, ping, ifconfig, iwconfig, netstat, nslooku ...
- Object对象和function对象
Obejct对象 1.ECMAScript 中的 Object 对象与 Java 中的 java.lang.Object 相似. 2.ECMAScript中的所有对象都由Object对象继承而来,Ob ...
- PHP支付第3方接口使用方法。
去年写过一遍博客文章. 网站申请不到支付宝接口.微信接口,免接口收款实现方式. 网络在发展,支付宝也好,微信也好,技术在进步,这种方式已经不能使用了,明显的一个问题是,支付宝的刷新工具,会定时退出,必 ...