PHP如何根据数组中的键值进行排序

时间:2023-03-09 13:35:13
PHP如何根据数组中的键值进行排序

主要是使用PHP的排序函数,asort()和arsort()。

为了减少代码的耦合性,我们将根据数组中的键值进行排序封装成一个函数

 <?php
$array = array(
array('name'=>'aa','price'=>),
array('name'=>'bb','price'=>),
array('name'=>'cc','price'=>),
array('name'=>'dd','price'=>),
array('name'=>'ee','price'=>),
array('name'=>'ff','price'=>),
array('name'=>'gg','price'=>)
);
function arr_sort($array,$key,$order="asc"){ //asc是升序 desc是降序
$arr_nums=$arr=array();
foreach($array as $k=>$v){
$arr_nums[$k]=$v[$key];
}
if($order=='asc'){
asort($arr_nums);
}else{
arsort($arr_nums);
}
foreach($arr_nums as $k=>$v){
$arr[$k]=$array[$k];
}
print_r($arr);
}
arr_sort($array,'price');

在PHP中,内置一个排序的函数 array_multisort(),可以参考上一篇的数组排序

 <?php
$array = array(
array('name'=>'aa','price'=>),
array('name'=>'bb','price'=>),
array('name'=>'cc','price'=>),
array('name'=>'dd','price'=>),
array('name'=>'ee','price'=>),
array('name'=>'ff','price'=>),
array('name'=>'gg','price'=>)
);
//方法一
function arr_sort($array,$key,$order="desc"){ //asc是升序 desc是降序
$arr_nums=$arr=array();
foreach($array as $k=>$v){
$arr_nums[$k]=$v[$key];
}
if($order=='asc'){
asort($arr_nums);
}else{
arsort($arr_nums);
}
foreach($arr_nums as $k=>$v){
$arr[$k]=$array[$k];
}
print_r($arr);
}
arr_sort($array,'price'); //方法二 foreach ( $array as $key => $row ){
$name[$key] = $row ['name'];
$price[$key] = $row ['price'];
}
array_multisort($price, SORT_ASC, $name, SORT_DESC, $array);
print_r($array);