ホームページ  >  記事  >  バックエンド開発  >  PHP での usort() の使用方法

PHP での usort() の使用方法

墨辰丷
墨辰丷オリジナル
2018-05-15 18:03:403104ブラウズ


この記事では主に PHP での usort() の使い方を紹介します。興味のある方はぜひ参考にしてください。

関数は、配列の並べ替えをカスタマイズします。並べ替えルールは $cmp_function 定义。 戻り値は true または false です。

それでは、簡単な関数を分析してみましょう:

<?php
function re($a,$b){
           return ($a<$b)?1:-1;
          }5 $x=array(1,3,2,5,9);
      usort($x, &#39;re&#39;)    
      print_r($x);
?>


出力される結果は次のとおりです:

Array(
    [0] => 9
    [1] => 5
    [2] => 3
    [3] => 2
    [4] => 1<br>)

は配列の逆の順序を実装します。分析は次のとおりです。

usort は配列内の値をペアで抽出し、それらをカスタム関数に順番に入力します。カスタム関数は、渡された内容に応じて 1 または -1 を返します。値は 1 または -1 の戻り値に基づいて決定されます。1 は値 2 よりも「大きい」または「小さい」ので、値は小さいものから大きいものの順に並べ替えられます。 つまり: 戻り値は 1 で、値 1 が値 2 より「大きい」ことを示し、次にソート: 値 2 -> 値 1; 戻り値は -1 で、値 1 が「小さい」ことを示します。値 2、次に並べ替え: 値 1 - > 値 2。

上記のカスタム関数で、$a$a が返された場合は、$b->$a の順にソートされます。エラーが -1 の場合は、$a が $b より小さいことを意味し、$a->$b の順にソートされます。

より複雑な並べ替えを行ってみましょう。まず配列を奇数、次に偶数に並べ替え、次に大きいものから小さいものに並べ替えます。

function Compare($str1, $str2) { 
    if (($str1 % 2 == 0) && ($str2 %2 == 0)) { 
        if ($str1 > $str2) 
            return - 1; 
        else 
            return 1; 
    } 
    if ($str1 % 2 == 0) 
        return 1;
    if ($str2 % 2 == 0)
        return -1;
    return ($str2 > $str1) ? 1 : - 1;
}
$scores = array (22,57,55,12,87,56,54,11);
usort ( $scores, &#39;Compare&#39; );
print_r ( $scores );

実装手順は次のとおりです。

1》2 つの入力値が両方とも偶数であるかどうかを判断し、両方とも偶数であるかどうかを判断し、大きいものから小さいものへ並べ替えます。

2》両方とも偶数でない場合は、少なくとも 1 つが奇数である場合、まず $str1 が偶数であるかどうかを判断します。偶数の場合、つまり ($str1%2==0) が確立されている場合は 1 が返されます。 $str1 は $str2 よりも大きく、usort 関数はそれを "小さい" $ str2-> "大きい" $str1 (偶数)

3》$str1 が奇数の場合、値はありません。 $str2 が偶数であるかどうかを判断し、偶数の場合は -1 を返します。これは、$ str1 が $str2 よりも小さいことを意味し、usort 関数は $str2 よりも小さいことを意味します。 str1 (奇数) -> "大きい" $str2 (偶数);

4》両方の値が奇数の場合、上記は値を返さず、$str1 と $str2 を大きい順に並べ替えます。 ;

出力結果は次のとおりです:

Array(
    [0] => 87
    [1] => 57
    [2] => 55
    [3] => 11
    [4] => 56
    [5] => 54
    [6] => 22
    [7] => 12
)

関連する推奨事項:

PHP 関数 usort() を使用してカスタム sort_PHP チュートリアルを実装する方法

PHP_I love U of (1) php 食品と飲料の保護者:二次元配列をソートする usort() 関数

PHP の usort() 関数が非安定ソートの場合はどうすればよいですか?

以上がPHP での usort() の使用方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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