| 12
 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
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 
 | // 说明:PHP中二维数组的排序方法// 整理:http://www.CodeBit.cn
 /**
 * @package BugFree
 * @version $Id: FunctionsMain.inc.php,v 1.32 2005/09/24 11:38:37 wwccss Exp $
 *
 *
 * Sort an two-dimension array by some level two items use array_multisort() function.
 *
 * sysSortArray($Array,"Key1","SORT_ASC","SORT_RETULAR","Key2"……)
 * @author Chunsheng Wang
 * @param array $ArrayData the array to sort.
 * @param string $KeyName1 the first item to sort by.
 * @param string $SortOrder1 the order to sort by("SORT_ASC"|"SORT_DESC")
 * @param string $SortType1 the sort type("SORT_REGULAR"|"SORT_NUMERIC"|"SORT_STRING")
 * @return array sorted array.
 */
 function sysSortArray($ArrayData,$KeyName1,$SortOrder1 = "SORT_ASC",$SortType1 = "SORT_REGULAR")
 {
 if(!is_array($ArrayData))
 {
 return $ArrayData;
 }
 // Get args number.
 $ArgCount = func_num_args();
 // Get keys to sort by and put them to SortRule array.
 for($I = 1;$I < $ArgCount;$I ++)
 {
 $Arg = func_get_arg($I);
 if(!eregi("SORT",$Arg))
 {
 $KeyNameList[] = $Arg;
 $SortRule[] = '$'.$Arg;
 }
 else
 {
 $SortRule[] = $Arg;
 }
 }
 // Get the values according to the keys and put them to array.
 foreach($ArrayData AS $Key => $Info)
 {
 foreach($KeyNameList AS $KeyName)
 {
 ${$KeyName}[$Key] = $Info[$KeyName];
 }
 }
 // Create the eval string and eval it.
 $EvalString = 'array_multisort('.join(",",$SortRule).',$ArrayData);';
 eval ($EvalString);
 return $ArrayData;
 }
 //################# 示例 #################
 $arr = array(
 array(
 'name' => '学习',
 'size' => '1235',
 'type' => 'jpe',
 'time' => '1921-11-13',
 'class' => 'dd',
 ),
 array(
 'name' => '中国功夫',
 'size' => '153',
 'type' => 'jpe',
 'time' => '2005-11-13',
 'class' => 'jj',
 ),
 array(
 'name' => '编程',
 'size' => '35',
 'type' => 'gif',
 'time' => '1997-11-13',
 'class' => 'dd',
 ),
 array(
 'name' => '中国功夫',
 'size' => '65',
 'type' => 'jpe',
 'time' => '1925-02-13',
 'class' => 'yy',
 ),
 array(
 'name' => '中国功夫',
 'size' => '5',
 'type' => 'icon',
 'time' => '1967-12-13',
 'class' => 'rr',
 ),
 );
 print_r($arr);
 //注意:按照数字方式排序时 153 比 65 小
 $temp = sysSortArray($arr,"name","SORT_ASC","type","SORT_DESC","size","SORT_ASC","SORT_STRING");
 print_r($temp);
 ?>
 
 |