PHP中二维数组的排序方法

  非原创,转载来的,感觉还不错,备用^_^

<?php
// 说明:PHP中二维数组的排序方法
/*
 * @package BugFree
 *
 * sysSortArray($Array,"Key1","SORT_ASC","SORT_RETULAR","Key2"……)
 * @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 (
   0 => array (
    'name' => '学习',
    'size' => '1235',
    'type' => 'jpe',
    'time' => '1921-11-13',
    'class' => 'dd',
  ),
  1 =>
  array (
    'name' => '中国功夫',
    'size' => '153',
    'type' => 'jpe',
    'time' => '2005-11-13',
    'class' => 'jj',
  ),
  2 =>
  array (
    'name' => '编程',
    'size' => '35',
    'type' => 'gif',
    'time' => '1997-11-13',
    'class' => 'dd',
  ),
  3 =>
  array (
    'name' => '中国功夫',
    'size' => '65',
    'type' => 'jpe',
    'time' => '1925-02-13',
    'class' => 'yy',
  ),
  4 =>
  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);
?>

标签:Function, PHP

评论当前被关闭。

Deepseath Modified from Green Hope Theme · Proudly powered by WordPress · 津ICP备09005418号-1  津公网安备 12010302001005号