二维数组按照指定的键名的值进行排序
2016-05-09 15:32
459 查看
自定义一个函数,使其能够对二维数组按照指定的键名的值进行排序,如下:
/**
* 对二维数组按照指定的键名的值进行排序
* @param unknown $arr 要排序的二维数组
* @param string $key 键名
* @param string $asc 是否升序排序,默认值为true
*/
function arraySort($arr=array(),$key="",$asc=true){
$length=count($arr);
if($length==0) return false;
$arr = array_values($arr); // 重新建立数字索引
for($i=0;$i<$length-1;$i++){
for($j=0;$j<$length-$i-1;$j++){
if(!is_array($arr[$j])){
return false;
}
if(empty($key) || empty($arr[$j]["{$key}"])){
$keys = array_keys($arr[$j]);
$key = $keys[0]; // 如果传入的键名异常,则默认取第一个键名
}
if($asc){ // 升序排序
if($arr[$j]["{$key}"]>=$arr[$j+1]["{$key}"]){
$temp=$arr[$j+1];
$arr[$j+1]=$arr[$j];
$arr[$j]=$temp;
}
}else{ // 降序排序
if($arr[$j]["{$key}"]<=$arr[$j+1]["{$key}"]){
$temp=$arr[$j+1];
$arr[$j+1]=$arr[$j];
$arr[$j]=$temp;
}
}
}
}
return $arr;
}
函数调用示例:
$arr = array(
array('id'=>3, 'name'=>'xm'),
array('id'=>1, 'name'=>'wmz'),
array('id'=>7, 'name'=>'jk')
);
$arr = arraySort($arr, 'id', true);
var_dump($arr);
/**
* 对二维数组按照指定的键名的值进行排序
* @param unknown $arr 要排序的二维数组
* @param string $key 键名
* @param string $asc 是否升序排序,默认值为true
*/
function arraySort($arr=array(),$key="",$asc=true){
$length=count($arr);
if($length==0) return false;
$arr = array_values($arr); // 重新建立数字索引
for($i=0;$i<$length-1;$i++){
for($j=0;$j<$length-$i-1;$j++){
if(!is_array($arr[$j])){
return false;
}
if(empty($key) || empty($arr[$j]["{$key}"])){
$keys = array_keys($arr[$j]);
$key = $keys[0]; // 如果传入的键名异常,则默认取第一个键名
}
if($asc){ // 升序排序
if($arr[$j]["{$key}"]>=$arr[$j+1]["{$key}"]){
$temp=$arr[$j+1];
$arr[$j+1]=$arr[$j];
$arr[$j]=$temp;
}
}else{ // 降序排序
if($arr[$j]["{$key}"]<=$arr[$j+1]["{$key}"]){
$temp=$arr[$j+1];
$arr[$j+1]=$arr[$j];
$arr[$j]=$temp;
}
}
}
}
return $arr;
}
函数调用示例:
$arr = array(
array('id'=>3, 'name'=>'xm'),
array('id'=>1, 'name'=>'wmz'),
array('id'=>7, 'name'=>'jk')
);
$arr = arraySort($arr, 'id', true);
var_dump($arr);
相关文章推荐
- codeforces 651B Beautiful Paintings (思路题)
- Django系列七:Django Nginx+uwsgi 安装配置
- 【小笔记】修改状态条文字的颜色为白色的
- 通过端口 1433 连接到主机 127.0.0.1 的 TCP/IP 连接失败解决方法
- GitHub的注册与使用(详细图解)
- struts2(十)之JSON基础
- 请求所有父控件及祖宗控件不要拦截事件
- 移动web资源整理
- VC 全屏,最前端,去边框
- 当打开一个文件,若文件不存在时,创建它,并在文件中写入hello 2016
- Android控件架构与自定义控件详解
- 进程与线程
- 一个简单的PHP的CURL类
- jquery实现表格中点击相应行变色功能效果【实例代码】
- ip xfrm配置nat穿越
- C++中变量的类型与作用域学习教程
- 开源数据集
- 上传图片 ajax input type="file" 兼容 ie chroem 火狐
- GitHub项目跟进
- Python 并发