本文实例讲述了PHP实现二维数组按某列进行排序的方法。分享给大家供大家参考,具体如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
/* * 二维数组 按某列排序 * array_multisort($arr1,$arr2) * 手册 例子如下 * */ $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); // 取得列的列表 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 ); /*************************************/ /* 从上面的例子不难看出,array_multisort()函数 * 是将每一个二维数组的列作为 一个参数进行排序 * 来达到整个数组的排序 */ /*************************************/ function sigcol_arrsort( $data , $col , $type =SORT_DESC){ if ( is_array ( $data )){ $i =0; foreach ( $data as $k => $v ){ if (key_exists( $col , $v )){ $arr [ $i ] = $v [ $col ]; $i ++; } else { continue ; } } } else { return false; } array_multisort ( $arr , $type , $data ); return $data ; } print_r(sigcol_arrsort( $data , 'edition' ,SORT_DESC)); /*说白了 原理就是: 新数组 原二维数组 2 array('volume' => 67, 'edition' => 2); 1 array('volume' => 86, 'edition' => 1); 6 array('volume' => 85, 'edition' => 6); 2 array('volume' => 98, 'edition' => 2); 6 array('volume' => 86, 'edition' => 6); 7 array('volume' => 67, 'edition' => 7); 这两个数组的每一行都锁在一起,新数组一旦变动顺序, 那么就会连带每一行的二维数组也跟着变换顺序 ,即新数组为参照物 相当于查询子句中的 order by */ |
运行结果:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
Array ( [0] => Array ( [volume] => 67 [edition] => 7 ) [1] => Array ( [volume] => 85 [edition] => 6 ) [2] => Array ( [volume] => 86 [edition] => 6 ) [3] => Array ( [volume] => 67 [edition] => 2 ) [4] => Array ( [volume] => 98 [edition] => 2 ) [5] => Array ( [volume] => 86 [edition] => 1 ) ) |
希望本文所述对大家PHP程序设计有所帮助。