开发中常用到多维数组的排序,在此将多维数组排序的方法记录下来,主要是应用了array_multisort函数。
array_multisort 函数返回一个排序数组。您可以输入一个或多个数组。函数先对第一个数组进行排序,接着是其他数组,如果两个或多个值相同,它将对下一个数组进行排序。
注释:字符串键名将被保留,但是数字键名将被重新索引,从 0 开始,并以 1 递增。
注释:您可以在每个数组后设置排序顺序和排序类型参数。如果没有设置,每个数组参数会使用默认值。
<?php
/**
* @application : 多维数组的排序
* @description : 下面demo的情景为有三个学生,且身高未按从大到小排序,期望按照身高排序。
*/
$students = [
0 => [
'name' => '李四',
'height' => 40,
],
1 => [
'name' => '张三',
'height' => 30,
],
2 => [
'name' => '王五',
'height' => 50,
],
];
var_dump($students);
/**
* 将students数组中的所有height的value,存储到一个key是height数组中
*/
$tmp = array();
foreach ( $students as $k => $v ) {
foreach ( $v as $k2 => $v2 ) {
if ( $k2 == 'height' ) { //key是height的存储
$tmp[] = $v2;
}
}
}
var_dump($tmp);
/**
* 升序.SORT_ASC 降序.SORT_DESC
*/
array_multisort($tmp,SORT_NUMERIC,SORT_ASC, $students);
var_dump($students);
exit;
/**
* 可扩展为function
* @param array 需要排序的多维数组
* @param key 依据哪个key作为排序条件
* @param order 升序 or 降序
* @return 排序后的数组
*/
function multipleArraySort($array,$key,$order) {
return $array;
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。