实战一
$arr=[
[‘age’=>20,’name’=>’judy’],
[‘age’=>18,’name’=>’marry’],
[‘age’=>31,’name’=>’lily’]
];
方法1:usort
// 使用 usort 根据 age 排序
usort($data, function($a, $b) {
return $a['age'] <=> $b['age'];
});
var_dump($arr);
// [['age' => 18, 'name' => 'marry'], ['age' => 20, 'name' => 'judy'], ['age' => 31, 'name' => 'lily']]
方法2:array_multisort
$keys = array_column($arr, 'age'); var_dump($keys); // [0 => 20, 1 => 18, 2 => 31] array_multisort($keys, SORT_ASC, $arr); var_dump($arr); // [['age' => 18, 'name' => 'marry'], ['age' => 20, 'name' => 'judy'], ['age' => 31, 'name' => 'lily']]
当我们使用array_multisort这个函数排序时,要先用array_column排数组指定的列提取出来放第一个参数,排序常量放第二个参数,数组放到第三个参数,就可以按指定的字段进行排序了。
SORT_ASC 是升序,SORT_DESC 是降序。
注: array_column 函数是从 PHP 5.5.0 开始引入的,如果你在使用的 PHP 版本低于 5.5.0,则会遇到这个错误。
实战二
$arr = [
[7, 6, 4, 2],
[0, 0, 0, 0],
[2, 1, 4, 5],
[1, 7, 2, 1],
];
方法1:usort
usort($arr, function($a, $b) {
return $a[0] <=> $b[0];
});
print_r($arr);
[
[0, 0, 0, 0],
[1, 7, 2, 1],
[2, 1, 4, 5],
[7, 6, 4, 2],
];
方法2:array_multisort
// 提取每个子数组的第一个值
$firstColumn = array_column($arr, 0);
// 使用 array_multisort 根据第一个值排序
array_multisort($firstColumn, SORT_ASC, $arr);
print_r($arr);