先看个数组:
$data = [
0 => ['id' => 1, 'name' => 'Alpha'],
1 => ['id' => 3, 'name' => 'Beta'],
2 => ['id' => 2, 'name' => 'bank'],
3 => ['id' => 4, 'name' => 'atomic'],
];
如题目所言,需求一:要按照二维数组中的id排序:
array_multisort(array_column($data,'id'),SORT_DESC,$data);
//第二个参数,SORT_DESC:倒序,SORT_ASC:正序
打印结果如下:
Array
(
[0] => Array
(
[id] => 4
[name] => atomic
)
[1] => Array
(
[id] => 3
[name] => Beta
)
[2] => Array
(
[id] => 2
[name] => bank
)
[3] => Array
(
[id] => 1
[name] => Alpha
)
)
现在需求变了,需求二:要按照name的字母排序:
array_multisort(array_column($data, 'name'), SORT_ASC, SORT_STRING, $data);
// 第三个参数是按照字符串
还有其他的也奉献上:
排序类型标志:
SORT_REGULAR - 将项目按照通常方法比较(不修改类型)
◦ SORT_NUMERIC - 按照数字大小比较
◦ SORT_STRING - 按照字符串比较
◦ SORT_LOCALE_STRING - 根据当前的本地化设置,按照字符串比较。 它会使用 locale 信息,可以通过 setlocale() 修改此信息。
◦ SORT_NATURAL - 以字符串的"自然排序",类似 natsort()
◦ SORT_FLAG_CASE - 可以组合 (按位或 OR) SORT_STRING 或者 SORT_NATURAL 大小写不敏感的方式排序字符串。
打印结果如下:
Array
(
[0] => Array
(
[id] => 1
[name] => Alpha
)
[1] => Array
(
[id] => 3
[name] => Beta
)
[2] => Array
(
[id] => 4
[name] => atomic
)
[3] => Array
(
[id] => 2
[name] => bank
)
)
细心人的会看到先排序大写,后排小写。如果不满足需求可以先把字符转小写再排序:
array_multisort(array_map('strtolower', array_column($data, 'name')), SORT_ASC, SORT_STRING, $data);
打印结果如下:
Array
(
[0] => Array
(
[id] => 1
[name] => Alpha
)
[1] => Array
(
[id] => 4
[name] => atomic
)
[2] => Array
(
[id] => 2
[name] => bank
)
[3] => Array
(
[id] => 3
[name] => Beta
)
)
里面用到了其他的函数,可以搜PHP手册。
个人做了一个博客,里面有更多分享,欢迎点击:www.caohongyuan.cn