实战一

$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,则会遇到这个错误。

php 自定义 array_column 函数

实战二

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

作者 admin

百度广告效果展示