有一组循环数组,里面有距离值,想根据距离排序展示,百度一圈,基本全是冒泡排序的方法
后来经过一次次寻找和自己修改,终于得到了一组挺精简还适合我现在状况的代码
先随便设置一组循环数组:
$list = array(
array('name'=>'北京','nums'=>'200'),
array('name'=>'上海','nums'=>'80'),
array('name'=>'广州','nums'=>'150'),
array('name'=>'深圳','nums'=>'70'),
array('name'=>'电脑屋','nums'=>'55')
);
如下才是真正的代码,我封装成了函数,方便使用
function vrsort($arr){
foreach($arr as $key=>$val){
$a[] = $val['nums'];//这里要注意$val['nums']不能为空,不然后面会出问题
}
sort($a);//从小到大
//rsort($a);//从大到小
//$a=array_reverse($a);
$a = array_flip($a);
foreach($arr as $k=>$v){
$temp1 = $v['nums'];
$temp2 = $a[$temp1];
$result[$temp2] = $v;
}
ksort($result);
return $result;
}
打印整理后的数组
var_dump(vrsort($list));
结果如下
array(5) { [0]=> array(2) { ["name"]=> string(9) "电脑屋" ["nums"]=> string(2) "55" } [1]=> array(2) { ["name"]=> string(6) "深圳" ["nums"]=> string(2) "70" } [2]=> array(2) { ["name"]=> string(6) "上海" ["nums"]=> string(2) "80" } [3]=> array(2) { ["name"]=> string(6) "广州" ["nums"]=> string(3) "150" } [4]=> array(2) { ["name"]=> string(6) "北京" ["nums"]=> string(3) "200" } }
本文链接:https://www.dnwfb.com/1564.html,转载请注明出处。
评论0