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);