代码如下: 
 
- <?php 
 
 - /** 
 
 - * 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 <wwccss@263.net> 
 
 - * @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; 
 
 - } 
 
 - $ArgCount = func_num_args(); 
 
 - for($I = 1;$I < $ArgCount;$I ++) 
 
 - { 
 
 - $Arg = func_get_arg($I); 
 
 - if(!eregi("SORT",$Arg)) 
 
 - { 
 
 - $KeyNameList[] = $Arg; 
 
 - $SortRule[] = '$'.$Arg; 
 
 - } 
 
 - else 
 
 - { 
 
 - $SortRule[] = $Arg; 
 
 - } 
 
 - } 
 
 - foreach($ArrayData AS $Key => $Info) 
 
 - { 
 
 - foreach($KeyNameList AS $KeyName) 
 
 - { 
 
 - ${$KeyName}[$Key] = $Info[$KeyName]; 
 
 - } 
 
 - } 
 
 - $EvalString = 'array_multisort('.join(",",$SortRule).',$ArrayData);'; 
 
 - eval ($EvalString); 
 
 - return $ArrayData; 
 
 - } 
 
 - //################# 示例 ################# 
 
 - $arr = array( 
 
 - array( 
 
 - 'name' => '学习', 
 
 - 'size' => '1235', 
 
 - 'type' => 'jpe', 
 
 - 'time' => '1921-11-13', 
 
 - 'class' => 'D', 
 
 - ), 
 
 - array( 
 
 - 'name' => '中国功夫', 
 
 - 'size' => '153', 
 
 - 'type' => 'jpe', 
 
 - 'time' => '2005-11-13', 
 
 - 'class' => 'J', 
 
 - ), 
 
 - array( 
 
 - 'name' => '编程', 
 
 - 'size' => '35', 
 
 - 'type' => 'gif', 
 
 - 'time' => '1997-11-13', 
 
 - 'class' => 'A', 
 
 - ), 
 
 - array( 
 
 - 'name' => '中国功夫', 
 
 - 'size' => '65', 
 
 - 'type' => 'jpe', 
 
 - 'time' => '1925-02-13', 
 
 - 'class' => 'D', 
 
 - ), 
 
 - array( 
 
 - 'name' => '中国功夫', 
 
 - 'size' => '5', 
 
 - 'type' => 'icon', 
 
 - 'time' => '1967-12-13', 
 
 - 'class' => 'C', 
 
 - ), 
 
 - ); 
 
 - print_r($arr); 
 
 - //注意:按照数字方式排序时 153 比 65 小 
 
 - $temp = sysSortArray($arr,"class","SORT_ASC","type","SORT_DESC","size","SORT_ASC","SORT_STRING"); 
 
 - echo "<pre>"; 
 
 - print_r($temp); 
 
 - ?>
 
  复制代码 
  
 
 
 
 |