Site icon 时鹏亮的Blog

PHP二维数组排序函数

请知悉:本文最近一次更新为 10年 前,文中内容可能已经过时。

一道面试题:
当然,正常的一维数组其实是有sort(),asort(),arsort()等函数可以排序的(其实我最常用的就是sort了,后面俩基本没用过……惭愧惭愧)。
它可以对二维数组按照指定的键值进行排序,也可以指定升序或降序排序法(默认为升序),示例:

function array_sort($arr,$keys,$type='asc'){
$keysvalue = $new_array = array();
foreach ($arr as $k=>$v){
$keysvalue[$k] = $v[$keys];
}
if($type == 'asc'){
asort($keysvalue);
}else{
arsort($keysvalue);
}
reset($keysvalue);
foreach ($keysvalue as $k=>$v){
$new_array[$k] = $arr[$k];
}
return $new_array;
}
$array = array(
array('name'=>'手机','brand'=>'诺基亚','price'=>1050),
array('name'=>'笔记本电脑','brand'=>'lenovo','price'=>4300),
array('name'=>'剃须刀','brand'=>'飞利浦','price'=>3100),
array('name'=>'跑步机','brand'=>'三和松石','price'=>4900),
array('name'=>'手表','brand'=>'卡西欧','price'=>960),
array('name'=>'液晶电视','brand'=>'索尼','price'=>6299),
array('name'=>'激光打印机','brand'=>'惠普','price'=>1200)
);
$ShoppingList = array_sort($array,'price');
print_r($ShoppingList);

输出结果:

Array
(
[4] => Array
(
[name] => 手表
[brand] => 卡西欧
[price] => 960
)

[0] => Array
(
[name] => 手机
[brand] => 诺基亚
[price] => 1050
)

[6] => Array
(
[name] => 激光打印机
[brand] => 惠普
[price] => 1200
)

[2] => Array
(
[name] => 剃须刀
[brand] => 飞利浦
[price] => 3100
)

[1] => Array
(
[name] => 笔记本电脑
[brand] => lenovo
[price] => 4300
)

[3] => Array
(
[name] => 跑步机
[brand] => 三和松石
[price] => 4900
)

[5] => Array
(
[name] => 液晶电视
[brand] => 索尼
[price] => 6299
)
)

如果你对其中的foreach有些不明白的话,可以参考昨天的日志:PHP中foreach循环示例详解


如您从本文得到了有价值的信息或帮助,请考虑扫描文末二维码捐赠和鼓励。

尊重他人劳动成果。转载请务必附上原文链接,我将感激不尽。


与《PHP二维数组排序函数》相关的博文:

Exit mobile version