PHP根据循环数组里的键值从小到大或从大到小排序的函数!

有一组循环数组,里面有距离值,想根据距离排序展示,百度一圈,基本全是冒泡排序的方法

后来经过一次次寻找和自己修改,终于得到了一组挺精简还适合我现在状况的代码

先随便设置一组循环数组:

$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

评论0

没有账号? 注册  忘记密码?