首頁 > 後端開發 > php教程 > PHP數組之array_multisort函數詳解

PHP數組之array_multisort函數詳解

小云云
發布: 2023-03-22 12:58:02
原創
3256 人瀏覽過

PHP中array_multisort函數會對多個陣列或多維數組排序,參數陣列被當成一個表格的列並以行來排序——這類似於 SQL 的 ORDER BY 子句的功能。第一個陣列是要排序的主要陣列。數組中的行(值)比較相同的話就按照下一個輸入數組中對應值的大小來排序,依此類推。注意:作為參數的陣列元素個數應保持一致,否則會報錯。

先看一個對多個陣列進行排序的例子。

  1. $array1 = array('one'=>'10','two'=>'20','three'=>'20','four'=>10);  
    $array2 = array('one'=>'10','two'=>'30','three'=>'20','four'=>'1');  
    $array3 = array('one'=>'C','two'=>'A','three'=>'B','four'=>'F');  
      
    array_multisort($array1,$array2,$array3);  
    print_r($array1);//Array ( [four] => 10 [one] => 10 [three] => 20 [two] => 20 )  
    print_r($array2);//Array ( [four] => 1 [one] => 10 [three] => 20 [two] => 30 )  
    print_r($array3);//Array ( [four] => F [one] => C [three] => B [two] => A )
    登入後複製


在上面的範例中,首先對第一個參數陣列進行排序(預設所有陣列升序排序),我們可以看出第一個數組中存在相同的值(鍵名'one'和'four'的鍵值相同,鍵名'two'和'three'的鍵值相同),所以在排序第一個數組的相同值時就依照下一個輸入數組中對應值的大小來排序(第二個數組'four'的值小於'one'的值,因此four的值排在one的前面),依此類推。

在看一個,改變排序順序的例子。

  1. $array1 = array('one'=>'10','two'=>'20','three'=>'20','four'=>10);  
    $array2 = array('one'=>'10','two'=>'30','three'=>'20','four'=>'1');  
    $array3 = array('one'=>'C','two'=>'A','three'=>'B','four'=>'F');  
      
    array_multisort($array1,SORT_DESC,$array2,SORT_ASC,$array3);  
    print_r($array1);//Array ( [three] => 20 [two] => 20 [four] => 10 [one] => 10 )  
    print_r($array2);//Array ( [three] => 20 [two] => 30 [four] => 1 [one] => 10 )  
    print_r($array3);//Array ( [three] => B [two] => A [four] => F [one] => C )
    登入後複製

在這個例子中,第一個陣列降序排序,碰到相同的值,按照第二個陣列升序值進行排序。

注意:如果要是排序數組都是關聯數組,則保留原有key名,若存在索引數組,則會依序重新建立索引。

  1. $array1 = array('one'=>'10',2=>'20',3=>'20',4=>10);    
    $array2 = array('one'=>'10','2'=>'30','3'=>'20','four'=>'1');    
    $array3 = array('one'=>'C','2'=>'A','3'=>'B','four'=>'F');    
        
    array_multisort($array1,$array2,$array3);    
      
    print_r($array1); //Array ( [0] => 10 [one] => 10 [1] => 20 [2] => 20 )   
    print_r($array2); //Array ( [four] => 1 [one] => 10 [0] => 20 [1] => 30 )   
    print_r($array3); //Array ( [four] => F [one] => C [0] => B [1] => A )
    登入後複製

多維數組排序。

我們通常有一些多維數組需要排序:

  1. $guys = array(  
        array('name'=>'jake', 'score'=>80, 'grade' =>'A'),  
        array('name'=>'jina', 'score'=>70, 'grade'=>'A'),  
        array('name'=>'john', 'score'=>70, 'grade' =>'A'),  
        array('name'=>'ben', 'score'=>20, 'grade'=>'B')  
    );  
    //例如我们想按成绩倒序排列,如果成绩相同就按名字的升序排列。  
    //这时我们就需要根据$guys的顺序多弄两个数组出来:  
    $scores = array(80,70,70,20);  
    $names = array('jake','jina','john','ben');  
    //然后  
    array_multisort($scores, SORT_DESC, $names, $guys);  
      
    foreach($guys as $v){  
        print_r($v);  
        echo "<br/>";  
    }  
    /* 
    Array ( [name] => jake [score] => 80 [grade] => A ) 
    Array ( [name] => jina [score] => 70 [grade] => A ) 
    Array ( [name] => john [score] => 70 [grade] => A ) 
    Array ( [name] => ben [score] => 20 [grade] => B ) 
    */
    登入後複製

相關推薦:

php對多個數組或多維數組進行排序的函數array_multisort()

關於array_multisort()的10篇文章推薦

#PHP array_multisort()函數的使用札記

#

以上是PHP數組之array_multisort函數詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板