您的位置:首页 > 其它

二维数组按照指定的键名的值进行排序

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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: