ホームページ  >  記事  >  バックエンド開発  >  PHP配列のarray_multisort関数の詳細説明

PHP配列のarray_multisort関数の詳細説明

小云云
小云云オリジナル
2018-03-27 15:01:123146ブラウズ

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' は同じキー値を持ちます)。そのため、最初の配列で同じ値を並べ替えるときは、配列のサイズに従って並べ替えられます。次の入力配列の対応する値 (いいえ。2 つの配列の 'four' の値は '1' の値より小さいため、4 の値は 1 の前にランク付けされます) などです。

並べ替え順序を変更する例を見てみましょう。

  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 )

この例では、最初の配列が降順で並べ替えられ、同じ値が見つかった場合、2 番目の配列は昇順の値に従って並べ替えられます。

注: ソートされた配列がすべて連想配列である場合、インデックス配列がある場合は、元のキー名が保持され、インデックスが順番に再確立されます。

  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 function array_multisort() で複数の配列または多次元配列をソートします

に関する 10 件の記事array_multisort() 推奨記事

PHP array_multisort() 関数の使用上の注意

以上がPHP配列のarray_multisort関数の詳細説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。