PHP では、配列をカスタム順序で並べ替える 2 つの方法があります。 カスタム コンパレータ: Comparable インターフェイスを実装し、2 つのオブジェクトの比較規則を指定します。匿名関数: 2 つのオブジェクトを基準と比較するためのカスタム コンパレーターとして匿名関数を作成します。
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 サイトの他の関連記事を参照してください。