01 <?php
02
03 // demo array to sort
04 $array_to_sort = array(
05 array('Paul','Allan','25','user'),
06 array('Fred','Kruger','13','moderator'),
07 array('Anna','Sweet','58','user'),
08 array('John','Doe','69','user'),
09 array('Cindy','Heller','29','moderator'),
10 );
11
12 // specify the default field to sort
13 $sort_field = 1;
14
15 // compare function
16 function cmpi($a, $b)
17 {
18 global $sort_field;
19 return strcmp($a[$sort_field], $b[$sort_field]);
20 }
21
22 // display sorting options
23 $sort_num = count($array_to_sort[0]);
24 $array_num = count($array_to_sort);
25
26 if(isset($_GET['sort'])
27 && is_numeric($_GET['sort'])
28 && in_array($_GET['sort'],range(0,$sort_num)))
29 {
30 $sort_field = $_GET['sort'];
31 }
32 echo '
33 <ul style="list-style: none; padding: 0.5em;">';
34 for($i = 0; $i < $sort_num; $i++)
35 {
36 echo ($i != $sort_field ? '
37 <li><a href="./?sort='.$i.'">sort by '.($i+1).'. field</a></li>' : '
38 <li><strong>currently sorted by '.($i+1).'. field</strong></li>');
39 }
40 echo '
41 </ul>';
42
43 // do the array sorting
44 usort($array_to_sort, 'cmpi');
45
46 // demo output
47 echo '
48 <table style="width: 30em;
49 border: 0.1em solid #eee;
50 border-collapse: collapse;
51 margin: 1em 0;
52 padding: 0.2em;">';
53 for($i = 0; $i < $array_num; $i++)
54 {
55 echo '
56 <tr>';
57 for($x = 0; $x < $sort_num; $x++)
58 {
59 echo '
60 <td>'.$array_to_sort[$i][$x].'</td>';
61 }
62 echo '
63 </tr>';
64 }
65 echo '
66 </table>';
67
68 ?>