php二维数组重新排序
于 2024-04-28 发布 阅读量63
方法一
//二维数组获取其中的一个字段重组一维数组,根据一维数组排序重组二维数组
$para_list = array(
0=>array('id'=>'31','paraid'=>'163','info'=>'北京海淀','lang'=>'cn','order'=>'3'),
1=>array('id'=>'32','paraid'=>'161','info'=>'北京','lang'=>'cn','order'=>'1'),
2=>array('id'=>'33','paraid'=>'162','info'=>'张先生','lang'=>'cn','order'=>'2'),
3=>array('id'=>'34','paraid'=>'165','info'=>'1562','lang'=>'cn','order'=>'5'),
4=>array('id'=>'35','paraid'=>'164','info'=>'15624','lang'=>'cn','order'=>'4')
);
$array = array();
foreach($para_list as $key=>$val){
$array[] = (int)$val['order'];//字符类型转换 如何不是int类型 可以加(int)转换
}
sort($array);//获取数组中的某个字段,重组一维数组,进行排序
$clength = count($array);
foreach($array as $key=>$val){
foreach($para_list as $key=>$value){
if($val == $value['order']){
$para_list1[] = $value;
}
}
}
var_dump($para_list1);
方法二 使用array_multisort()函数 https://www.runoob.com/php/func-array-multisort.html
$para_list = array(
0=>array('id'=>'31','paraid'=>'163','info'=>'北京海淀','lang'=>'cn','order'=>'3'),
1=>array('id'=>'32','paraid'=>'161','info'=>'北京','lang'=>'cn','order'=>'1'),
2=>array('id'=>'33','paraid'=>'162','info'=>'张先生','lang'=>'cn','order'=>'2'),
3=>array('id'=>'34','paraid'=>'165','info'=>'1562','lang'=>'cn','order'=>'5'),
4=>array('id'=>'35','paraid'=>'164','info'=>'15624','lang'=>'cn','order'=>'4')
);
foreach($para_list as $key=>$val){
$array[] = (int)$val['order'];//字符类型转换
}
array_multisort($array,SORT_ASC,SORT_REGULAR,$para_list);
var_dump($para_list);
方法三 使用usort()函数
$para_list2 = array(
0=>array('id'=>'31','paraid'=>'163','info'=>'北京海淀','lang'=>'cn','order'=>'3'),
1=>array('id'=>'32','paraid'=>'161','info'=>'北京','lang'=>'cn','order'=>'1'),
2=>array('id'=>'33','paraid'=>'162','info'=>'张先生','lang'=>'cn','order'=>'2'),
3=>array('id'=>'34','paraid'=>'165','info'=>'1562','lang'=>'cn','order'=>'5'),
4=>array('id'=>'35','paraid'=>'164','info'=>'15624','lang'=>'cn','order'=>'4')
);
function order_sort($x,$y){
return $x['order'] > $y['order'];
}
usort($para_list2,'order_sort');
var_dump($para_list2); 