PHP根据二维数组KEY下标进行排序,多重排序 | array_multisort

1.数据库里面原始数据,大家可以看到两列中其实是乱的。那么我想将他按顺序进行排序怎么做呢
volume | edition
-------+--------
67 | 2
86 | 1
85 | 6
98 | 2
86 | 6
67 | 7

2.php 查出来或模拟的数据
$data[] = array('volume' => 67, 'edition' => 2);
$data[] = array('volume' => 86, 'edition' => 1);
$data[] = array('volume' => 85, 'edition' => 6);
$data[] = array('volume' => 98, 'edition' => 2);
$data[] = array('volume' => 86, 'edition' => 6);
$data[] = array('volume' => 67, 'edition' => 7);


3.进行排序

foreach ($data as $key => $row) {
	$volume[$key]  = $row['volume'];
	$edition[$key] = $row['edition'];
}
//将数据根据 volume 降序排列,根据 edition 升序排列
//把 $data 作为最后一个参数,以通用键排序 array_multisort($volume, SORT_DESC, $edition, SORT_ASC, $data);
print_r($data);

 

4.排序结果
volume | edition
-------+--------
98 | 2
86 | 1
86 | 6
85 | 6
67 | 2
67 | 7
怎么样,看完是不是感觉很强大,其实这个函数还有很多增强型的应用,大家可以翻看一下手册。。



参数描述
array1 必需。规定数组。
sorting order

可选。规定排列顺序。可能的值:

  • SORT_ASC - 默认。按升序排列 (A-Z)。
  • SORT_DESC - 按降序排列 (Z-A)。
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 可选。规定数组。
array3

可选。规定数组。

 

 
posted @ 2016-10-28 14:44  啊亮学长  阅读(9065)  评论(1编辑  收藏  举报