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

王林
リリース: 2024-04-27 11:09:02
オリジナル
371 人が閲覧しました

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 サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!