PHP二维数组排序(感谢滔哥lvtao.net)
滔哥原创
/*
_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二维数组排序(感谢滔哥lvtao.net)的更多相关文章
- PHP二维数组排序(感谢滔哥)
滔哥原创 /* _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) ...
随机推荐
- 结对编程2—Fault&Error&Failure
学习进度表 点滴成就 学习时间 新编写代码行数 博客量(篇) 学到知识点 第一周 8 0 0 了解软件工程 第二周 10 0 1 博文一篇 第三周 15 0 2 选择项目.调查问卷 第四周 20 80 ...
- tesseract .net 中使用历程
最近在看文字识别的实例,也查询很多文章,最后还是选定开源的引擎(tesseract3.0.1) 最开始找到的是用微软Office的一个组件实现的,个人感觉不是我想要的(要开源啊才是王道) http:/ ...
- java 多线程研究:锁的概念
java多线程:锁 java的多线程中的锁是干嘛的呢?在网上找了很多博客,大都是很专业的语言,让我一时间摸不着头脑.下面分三个部分来总结多线程中的锁的概念. 一,基础概念: 多线程在运行的时候可能会遇 ...
- hdu5692【dfs序】【线段树】
Snacks Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Sub ...
- opengl学习笔记(二):使用OpenCV来创建OpenGL窗口
通常的增强现实应用需要支持OpenGL的OpenCV来对真实场景进行渲染.从2.4.2版本开始,OpenCV在可视化窗口中支持OpenGL.这意味着在OpenCV中可轻松渲染任何3D内容. 若要在Op ...
- windows远程访问ubuntu下的jupyter notebook必要配置
0.生成配置文件(一般采用默认) jupyter notebook --generate-config 1.打开ipython, 创建一个密文密码 In [1]: from notebook.auth ...
- PHP漏洞-Session劫持
http://os.51cto.com/art/201204/328888.htm
- rank() over,dense_rank(),row_number() 的区别
转自:https://jingyan.baidu.com/article/597035521ff2ec8fc107404b.html rank() over是的作用是查出指定条件后进行一个排名,但是有 ...
- 如果要写php扩展啥的, 要看什么?
1.写PHP扩展并不难 有一定C语言基础即可.切记一定要在Linux平台下开发,不要用Windows 这里有一篇博文,可以看下http://rango.swoole.com/archives/152 ...
- Python装饰器与面向切面编程(转)
add by zhj: 装饰器的作用是将代码中可以独立的功能独立出来,实现代码复用,下面那个用于统计函数运行时间的装饰器就是很好的例子,我们不用修改原有的函数和调用原有函数的地方,这遵循了开闭原则.装 ...