萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> php編程 >> 詳細php數組排序函數講解與實現代碼

詳細php數組排序函數講解與實現代碼

雖然php提供了大量的數組排序函數,但是都不太可以滿足我們平常使用中的需要,下面我先介紹一下php中種排序函數,然後再綜合一個實例來說數組值,鍵名等進行排序。

//sort() 函數按升序對給定數組的值排序。

$my_array = array("a" => "dog", "b" => "cat", "c" => "horse");

sort($my_array);
print_r($my_array);

//krsort(array,sorttype)函數將數組按照鍵逆向排序,為數組值保留原來的鍵。
$my_array = array("a" => "dog", "b" => "cat", "c" => "horse");
krsort($my_array);
print_r($my_array);

//看一款實例

function natkrsort($array)
{
    $keys = array_keys($array);
    natsort($keys);

    foreach ($keys as $k)
    {
        $new_array[$k] = $array[$k];
    }
  
    $new_array = array_reverse($new_array, true);

    return $new_array;
}

// arsort() arsort() 函數對數組進行逆向排序並保持索引關系。主要用於對那些單元順序很重要的結合數組進行排序。

$my_array = array("a" => "dog", "b" => "cat", "c" => "horse");

arsort($my_array);
print_r($my_array);

//asort() 函數對數組進行排序並保持索引關系。主要用於對那些單元順序很重要的結合數組進行排序

$my_array = array("a" => "dog", "b" => "cat", "c" => "horse");

asort($my_array);
print_r($my_array);

//縮合上面的實例,寫一款數組排序函數

/**
 
  * 對數組排序
  * @param array $array 操作的數組
  * @param string $type key按鍵排序,value按值排序
  * @param string $field 字段名
  * @param string $order 排序方式asc順序desc逆序
  * @return void
  */
 function sort(&$array, $type = 'value', $field = null, $order = 'asc') {
  if ($field) {
   foreach ($array as $key => $value) {
    $temp[$key] = $value[$field];
   }
   if ($order=='asc') {
    asort($temp);
   } else {
    arsort($temp);
   }
   $newarray = array();
   foreach ($temp as $key => $value) {
    $newarray[] = $array[$key];
   }
   $array = $newarray;
  } else {
   if ($type=='key') {
    if ($order=='asc') {
     ksort($array);
    } else {
     krsort($array);
    }
   } else {
    if ($order=='asc') {
     asort($array);
    } else {
     arsort($array);
    }
   }
  }
 }
  

copyright © 萬盛學電腦網 all rights reserved