Created
July 14, 2010 07:19
-
-
Save wjzhangq/475139 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
// 说明: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 <[email protected]> | |
* @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); | |
?> | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment