萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> php編程 >> php多維數組排序方法

php多維數組排序方法

文章提供了多款關於多維數據排序方法,這是一款php數據排序代碼,如果你還搞不清楚如何排序的話,這裡的實例肯定可以幫助到你了哦。  代碼如下 復制代碼

//對多個數組排序

$ar1 = array("10", 100, 100, "a");
$ar2 = array(1, 3, "2", 1);
array_multisort($ar1, $ar2);

var_dump($ar1);
var_dump($ar2);

//本例中經過排序後,第一個數組將包含 "10","a",100,100。第二個數組將包含 1,1,"2",3。第二個數組中的項目順序完全和第一個數組中相應的項目(100 和 100)順序一致。

$ar = array(
       array("10", 11, 100, 100, "a"),
       array( 1, 2, "2", 3, 1)
     );
array_multisort($ar[0], sort_asc, sort_string,
               $ar[1], sort_numeric, sort_desc);
var_dump($ar);

/*
排序順序標志:
◆sort_asc - 按照上升順序排序
◆sort_desc - 按照下降順序排序

排序類型標志:
◆sort_regular - 將項目按照通常方法比較
◆sort_numeric - 將項目按照數值比較
◆sort_string - 將項目按照字符串比較

每個數組之後不能指定兩個同類的排序標志。每個數組後指定的排序標志僅對該數組有效 - 在此之前為默認值 sort_asc 和 sort_regular

*/

 function cmp($a, $b)
{
    return strcmp($a["fruit"], $b["fruit"]);
}

$fruits[0]["fruit"] = "lemons";
$fruits[1]["fruit"] = "apples";
$fruits[2]["fruit"] = "grapes";

usort($fruits, "cmp");

while (list($key, $value) = each($fruits)) {
    echo "$fruits[$key]: " . $value["fruit"] . " ";
}

//看一個完善的

$data=array(
 array(
  'name'=>'alice',
  'key'=>'2fc4ab3d639e5400efdfc73bc27e83f1',
  'age'=>20
 ),
 array(
  'name'=>'claudia',
  'key'=>'831c2b79c1f19af39c7e3321e11e5f5e',
  'age'=>18
 ),
 array(
  'name'=>'beatrice',
  'key'=>'6f8512a2066b8f35a27a495ce1228c76',
  'age'=>100
 ),
 array(
  'name'=>'denise',
  'age'=>25,
  'key'=>'ef6de3b178bf9f69a9fef72e4ee7bbe9'
 )
);

$arr1 = sortdata($data, "name","asc");
echo "<pre>";
var_dump($arr1);
echo "</pre>";

$arr2 = sortdata($data, "age","desc");
echo "<pre>";
var_dump($arr2);
echo "</pre>";


function sortdata($data, $col, $order){
 if (count($data)) $temp_array[key($data)] = array_shift($data);

 foreach($data as $key => $val){
  $offset = 0;
  $found = false;
  foreach($temp_array as $tmp_key => $tmp_val){
   if(!$found and strtolower($val[$col]) > strtolower($tmp_val[$col])){
    $temp_array = array_merge((array)array_slice($temp_array,0,$offset),
     array($key => $val),
     array_slice($temp_array,$offset)
    );
    $found = true;
   }
   $offset++;
  }
  if(!$found) {
   $temp_array = array_merge($temp_array, array($key => $val));
   }
 }
 if (strtolower($order)=="asc"){
  $array = array_reverse($temp_array);
 } else {
  $array = $temp_array;
 }
 return $array;
}

?>

copyright © 萬盛學電腦網 all rights reserved