一道面试题:
当然,正常的一维数组其实是有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循环示例详解
如您从本文得到了有价值的信息或帮助,请考虑扫描文末二维码捐赠和鼓励。
如本文对您有用,捐赠和留言 将是对我最好的支持~(捐赠可转为站内积分)
如愿意,请向朋友推荐本站,谢谢。
尊重他人劳动成果。转载请务必附上原文链接,我将感激不尽。