ホームページ  >  記事  >  バックエンド開発  >  PHP 配列の高度な並べ替え: カスタム コンパレーターと匿名関数

PHP 配列の高度な並べ替え: カスタム コンパレーターと匿名関数

王林
王林オリジナル
2024-04-27 11:09:02458ブラウズ

PHP では、配列をカスタム順序で並べ替える 2 つの方法があります。 カスタム コンパレータ: Comparable インターフェイスを実装し、2 つのオブジェクトの比較規則を指定します。匿名関数: 2 つのオブジェクトを基準と比較するためのカスタム コンパレーターとして匿名関数を作成します。

PHP 数组高级排序:自定义比较器和 匿名函数

PHP 配列の高度な並べ替え: カスタム コンパレーターと匿名関数

PHP では、配列をカスタム順序で並べ替えます。並べ替えには、それ以上の機能が必要です。標準のソート関数が提供できます。カスタム コンパレータと匿名関数は、sort()rsort() などの組み込み関数よりも柔軟な並べ替えメカニズムを提供します。

カスタム コンパレータ

カスタム コンパレータは、2 つのオブジェクトを比較する方法を定義する Comparable インターフェイスを実装するクラスです。 compareTo() メソッドを実装して、どのオブジェクトが別のオブジェクトより大きい、小さい、または等しいとみなされるかを指定します。

class CustomComparator implements Comparable {
    public function compareTo($a, $b): int {
        if ($a == $b) {
            return 0;
        }
        return $a > $b ? 1 : -1;
    }
}

匿名関数

匿名関数は、その場で作成して引数として渡すことができる名前のない関数です。これらは、カスタム コンパレータの作成によく使用されます:

$comparator = function($a, $b) {
    if ($a == $b) {
        return 0;
    }
    return $a > $b ? 1 : -1;
};

実践例

学生の名前とスコアを含む配列を検討してください:

$students = [
    ['name' => 'Alice', 'score' => 85],
    ['name' => 'Bob', 'score' => 90],
    ['name' => 'Carol', 'score' => 80],
];

Customコンパレータ メソッド

$comparator = new CustomComparator();
usort($students, [$comparator, 'compareTo']);

匿名関数メソッド

usort($students, function($a, $b) {
    return $a['score'] <=> $b['score'];
});

上記のコードは、配列を学生のスコアの小さいものから大きいものに並べ替えます:

[
    ['name' => 'Carol', 'score' => 80],
    ['name' => 'Alice', 'score' => 85],
    ['name' => 'Bob', 'score' => 90],
];

以上がPHP 配列の高度な並べ替え: カスタム コンパレーターと匿名関数の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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