|
Example, php two-dimensional array sorting code.
- Description: A two-dimensional array ordering method in PHP
- Finishing: http://bbs.it-home.org
- /**
- * @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 the use Array_multisort () function.
- *
- * Syssortarray ($Array, "Key1", "Sort_asc", "Sort_retular", "Key2" ...)
- * @author Chunsheng Wang
- * @param array $ArrayData the array to sort.
- * @param string $KeyName 1 The first item to sort by.
- * @param string $SortOrder 1 The order to sort by ("Sort_asc" | " Sort_desc ")
- * @param string $SortType 1 the Sort type ("Sort_regular" | " Sort_numeric "|" Sort_string ")
- * @return Array sorted array.
- */
- function Syssortarray ($ArrayData, $KeyName 1, $SortOrder 1 = "Sort_asc", $SortType 1 = "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;
- }
- ################# Example #################
- $arr = Array (
- Array
- ' Name ' = ' Learn ',
- ' Size ' = ' 1235 ',
- ' Type ' = ' jpe ',
- ' Time ' = ' 1921-11-13 ',
- ' Class ' = ' DD ',
- ),
- Array
- ' Name ' = ' Chinese Kung fu ',
- ' Size ' = ' 153 ',
- ' Type ' = ' jpe ',
- ' Time ' = ' 2005-11-13 ',
- ' Class ' = ' JJ ',
- ),
- Array
- ' Name ' = ' programming ',
- ' Size ' = ' 35 ',
- ' Type ' = ' gif ',
- ' Time ' = ' 1997-11-13 ',
- ' Class ' = ' DD ',
- ),
- Array
- ' Name ' = ' Chinese Kung fu ',
- ' Size ' = ' 65 ',
- ' Type ' = ' jpe ',
- ' Time ' = ' 1925-02-13 ',
- ' Class ' = ' yy ',
- ),
- Array
- ' Name ' = ' Chinese Kung fu ',
- ' Size ' = ' 5 ',
- ' Type ' = ' icon ',
- ' Time ' = ' 1967-12-13 ',
- ' Class ' = ' rr ',
- ),
- );
- Print_r ($arr);
- Note: When sorting by number 153:65 Small
- $temp = Syssortarray ($arr, "name", "Sort_asc", "type", "Sort_desc", "size", "Sort_asc", "sort_string");
- Print_r ($temp);
- ?>
Copy Code |