首页 随心笔记正文

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

admin 随心笔记 2022-08-15 14:22:01 218 0 收藏文章
有一组循环数组,里面有距离值,想根据距离排序展示,百度一圈,基本全是冒泡排序的方法

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

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

$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"   }   }

版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接:www.dnwfb.com/page4_1564_0.html

推荐