array_column()方法
用途: 返回指定数组中某个单一列的值。
语法: array_column(array, column_key, index_key)
参数说明:
- array 必需,指定要使用的多维数组。
- column_key 必需,需要返回值的列。可以是索引数组的列的整数索引,或者是关联数组的列的字符串键值。
- index_key 可选。
用法示例:
$colors = [
[
'id' => 1,
'name' => 'red',
'code' => 'ff0000'
],
[
'id' => 2,
'name' => 'green',
'code' => '00ff00'
],
[
'id' => 3,
'name' => 'blue',
'code' => '0000ff'
]
];
// 提取name列的值
$color_names = array_column($colors, 'name');
array_multisort()方法
用途: 对多个数组或多维数组进行排序。
- 返回排序后的数组
- 可同时对多个数组进行排序,后面数组的排列顺序默认与第一个保持一致
- 函数先对第一个数组进行排序,然后是其他数组,如果两个或多个值相同,它将对下一个数组进行排序
- 字符串键名将被保留,但数字键名将被重新索引,从0开始,并以1递增
- 可以在每个数组后设置排列顺序和排序类型参数
语法:array_multisort(array1, sorting_order, sorting_type, array2, array3 ...)
参数说明: - array1 必需,规定数组。
- sorting_order 可选,指定排列顺序
- SORT_ASC 升序,默认
- SORT_DESC 降序
- sorting_type 可选,指定排序类型
- SORT_REGULAR 默认,把每一项按常规顺序排列(Standard ASCII,不改变类型)
- SORT_NUMERIC 把每一项作为数字来处理
- SORT_STRING 把每一项作为字符串来处理
- SORT_LOCALE_STRING 把每一项作为字符串来处理,基于当前区域设置(可通过 setlocale() 进行更改)
- SORT_NATURAL 把每一项作为字符串来处理,使用类似 natsort() 的自然排序
- SORT_FLAG_CASE 可以结合(按位或)SORT_STRING 或 SORT_NATURAL 对字符串进行排序,不区分大小写
- array2 可选
- arrayN 可选
用法示例
// 默认升序排序
$color_names = ['red', 'green', 'blue', 'yellow', 'white', 'black'];
array_multisort($color_names);
// 对两个数组进行排序
$color_names = ['red', 'green', 'blue', 'yellow', 'white', 'black'];
$color_codes = ['ff0000', '00ff00', '0000ff', 'ffff00', 'ffffff', '000000'];
// $color_names 按默认升序排序
// $color_codes 按和$color_names原索引一致的方式排序
// 如果两个参数调换位置,则排序结果不同
array_multisort($color_names, $color_codes);
通过指定列对二维(多维)数组进行排序
- 使用
array_column()
方法提取出需要排序的列的值; - 使用
array_multisort()
方法进行排序;
使用示例
// 需要排序的二维数组
$colors = [
[
'name' => 'red',
'code' => 'ff0000'
],
[
'name' => 'black',
'code' => '000000'
],
[
'name' => 'green',
'code' => '00ff00'
],
[
'name' => 'white',
'code' => 'ffffff'
],
[
'name' => 'blue',
'code' => '0000ff'
]
];
// 提取code列的值
$color_codes = array_column($colors, 'code');
// 按code列的值降序排序
array_multisort($color_codes, SORT_DESC, $colors);
// 输出结果
array (size=5)
0 =>
array (size=2)
'name' => string 'white' (length=5)
'code' => string 'ffffff' (length=6)
1 =>
array (size=2)
'name' => string 'red' (length=3)
'code' => string 'ff0000' (length=6)
2 =>
array (size=2)
'name' => string 'green' (length=5)
'code' => string '00ff00' (length=6)
3 =>
array (size=2)
'name' => string 'blue' (length=4)
'code' => string '0000ff' (length=6)
4 =>
array (size=2)
'name' => string 'black' (length=5)
'code' => string '000000' (length=6)