PHP數組排序,一維數組,二維數組排序

一維數組排序php

1. sort,rsort排序(r(reverse表示翻轉,即爲降序排列)),經過鍵值排序。程序員

<?php
$arr=array(10,2,4,1,5,8,7,9);
//等效於 $arr=array('0'=>10,'1'=>2,'2'=>4,'3'=>1,'4'=>5,'5'=>8,'6'=>7,'7'=>9);
//默認的排序,按鍵值升序排序,鍵名被重新規定,例如10原來的鍵名是0,如今是7
sort($arr);
 
var_dump($arr);
 
/*array (size=8)
  0 => int 1
  1 => int 2
  2 => int 4
  3 => int 5
  4 => int 7
  5 => int 8
  6 => int 9
  7 => int 10
 */
?>
<?php
$arr=array(10,2,4,1,5,8,7,9);
 
//默認的排序,按鍵值降序排序,鍵名被重新規定,同上
rsort($arr);
 
var_dump($arr);
 
/*array (size=8)
  0 => int 10
  1 => int 9
  2 => int 8
  3 => int 7
  4 => int 5
  5 => int 4
  6 => int 2
  7 => int 1
 */
?>

2. ksort,krsort排序,經過鍵名排序。數據庫

<?php
$arr=array(10,2,4,1,5,8,7,9);
 
//按鍵鍵名升序排序
ksort($arr);
 
var_dump($arr);
 
/*array (size=8)
  0 => int 10
  1 => int 2
  2 => int 4
  3 => int 1
  4 => int 5
  5 => int 8
  6 => int 7
  7 => int 9*/
?>
<?php
$arr=array(10,2,4,1,5,8,7,9);
 
//按鍵鍵名降序排序
krsort($arr);
 
var_dump($arr);
 
/*array (size=8)
  7 => int 9
  6 => int 7
  5 => int 8
  4 => int 5
  3 => int 1
  2 => int 4
  1 => int 2
  0 => int 10*/
?>

3. asort,arsort排序,經過鍵值排序。編程

<?php
$arr=array(10,2,4,1,5,8,7,9);
 
//按鍵鍵值升序排序,和sort不一樣的是,鍵名不會從新定義
asort($arr);
 
var_dump($arr);
 
/*array (size=8)
  3 => int 1
  1 => int 2
  2 => int 4
  4 => int 5
  6 => int 7
  5 => int 8
  7 => int 9
  0 => int 10*/
?>
<?php
$arr=array(10,2,4,1,5,8,7,9);
 
//按鍵鍵值降序排序,和rsort不一樣的是,鍵名不會從新定義
arsort($arr);
 
var_dump($arr);
 
/*array (size=8)
  0 => int 10
  7 => int 9
  5 => int 8
  6 => int 7
  4 => int 5
  2 => int 4
  1 => int 2
  3 => int 1*/
?>

二維數組根據某個鍵排序數組

//二維數組排序
function sortArr($arrays,$sort_key,$sort_order=SORT_ASC,$sort_type=SORT_NUMERIC ){
    $key_arrays =array();
    if(is_array($arrays)){
        foreach ($arrays as $array){
            if(is_array($array)){
                $key_arrays[] = $array[$sort_key];
            }else{
                return false;
            }
        }
    }else{
        return false;
    }
    array_multisort($key_arrays,$sort_order,$sort_type,$arrays);
    return $arrays;
}

//$data表示二維數組,結構好比說從數據讀取出來的多行表結構,'date'表示每行裏面的一個字段,經過這個字段排序
//SORT_DESC表示降序排列,SORT_STRING表示設置'date'字段的比較以字符串方式進行
$newData = $this->sortArr($data,'date',SORT_DESC,SORT_STRING);

二維數組根據多個鍵排序微信

//二維數組多鍵值排序
function my_sort($arrays,$sort_key,$sort_key1,$sort_order=SORT_ASC,$sort_order1=SORT_DESC){
    $key_arrays = $key_arrays1 = array();
    if(is_array($arrays)){
        foreach ($arrays as $array){
            if(is_array($array)){
                $key_arrays[] = $array[$sort_key];
                $key_arrays1[] = $array[$sort_key1];
            }else{
                return false;
            }
        }
    }else{
        return false;
    }
    array_multisort($key_arrays,$sort_order,$key_arrays1,$sort_order1,$arrays);
    return $arrays;
}

//$data表示二維數組,結構好比說從數據讀取出來的多行表結構
//'date'表示每行裏面的一個字段,經過這個字段排序,而後經過'time'字段排序
//SORT_DESC,SORT_ASC分別對應'date','time'兩個字段的排序方式
//效果相似於數據庫中order by data desc,time asc。
$newData = $this->sortArr($data,'date','time',SORT_DESC,SORT_ASC);

來自微信公衆號:編程社this

程序員平常進階寶典,歡迎關注!spa

相關文章
相關標籤/搜索