多维数组根据某个值排序
PHP开发中 多维数组排序 还是经常遇到的,特别是多维数组中,要根据某个值来排序。
PHP 自带了一个函数,可以帮助我们非常方便的实现这个功能array_multisort
这篇博客只是 记录下怎么用 ,并不是指导小白的说明文。
首先贴一个 PHP官方文档的解释 array_multisort-中文——- array_multisort-英文
关于这个函数的介绍就不详细展开了,文档写的特别清楚,只说怎么用
<?php
$arr = [
['name' => 'd1', 'height' => 172, 'age' => 21],
['name' => 'b1', 'height' => 188, 'age' => 49],
['name' => 'f1', 'height' => 179, 'age' => 15],
['name' => 'a1', 'height' => 178, 'age' => 32],
['name' => 'g1', 'height' => 168, 'age' => 15],
['name' => 'c1', 'height' => 178, 'age' => 25],
['name' => 'e1', 'height' => 198, 'age' => 16],
];
/**
* 假设有这么个数组, 我们希望可以根据 身高升序, 身高一样的按照年龄降序
*/
$heightArr = array_column($arr, 'height');
$ageArr = array_column($arr, 'age');
array_multisort(
$heightArr, SORT_ASC,
$ageArr, SORT_DESC,
$arr
);
print_r($heightArr);
print_r($ageArr);
print_r($arr);
/**
* 最终结果
* $heightArr会 升序排序
* $ageArr会 降序排序
* $heightArr会 身高升序, 身高一样的按照年龄降序
*/
//如果我们只需要$arr 排序之后的结果 可以直接这么写
array_multisort(
array_column($arr, 'height'), SORT_ASC,
array_column($arr, 'age'), SORT_DESC,
$arr
);