PHP では、組み込み関数と最適化テクニックを使用して、複数フィールドの並べ替えを実現できます。usort() 関数とカスタム比較関数を使用して、複数のフィールドに基づいて配列を並べ替えます。匿名関数を使用してコードを簡素化し、複数フィールドの並べ替えを実装します。ソート操作を簡素化するには、sorted などのサードパーティ ライブラリを使用します。
PHP 配列の複数フィールドの並べ替えのヒントと最適化
PHP では、組み込み関数 # を使用できます。 ##sort( ) および
usort() 配列を並べ替えます。ただし、複数のフィールドに基づいて配列を並べ替える必要がある場合、事態は複雑になります。
1. カスタム比較関数の使用
usort() 関数を使用すると、カスタム比較関数を指定できます。この関数は 2 つの要素をパラメータとして受け取り、2 番目の要素に対する最初の要素の位置を表す整数を返します。
$data = [ ["name" => "John", "age" => 30], ["name" => "Jane", "age" => 25], ["name" => "Jack", "age" => 35], ]; usort($data, function($a, $b) { if ($a['name'] == $b['name']) { return $a['age'] <=> $b['age']; } return strcmp($a['name'], $b['name']); }); print_r($data);
name と
name によって配列を昇順に並べ替えます。次に
age
2. 匿名関数を使用する
複数のフィールドで一度に並べ替える必要がある場合は、匿名関数を使用してコードを簡素化できます。usort($data, function($a, $b) { $cmp = strcmp($a['name'], $b['name']); if ($cmp == 0) { $cmp = $a['age'] <=> $b['age']; } return $cmp; });
複数フィールドの並べ替え操作を簡素化するのに役立つ PHP ライブラリが多数あります。たとえば、
sorted
use Sorted\Collections\Vector; $vector = new Vector($data); $vector->sortBy(['name', 'age'], [SORT_ASC, SORT_ASC]);
$students = [ ["name" => "John", "score" => 85, "class" => "A"], ["name" => "Jane", "score" => 90, "class" => "B"], ["name" => "Jack", "score" => 80, "class" => "A"], ]; usort($students, function($a, $b) { if ($a['class'] == $b['class']) { return $b['score'] <=> $a['score']; } return strcmp($a['class'], $b['class']); }); print_r($students);
以上がPHP 配列の複数フィールドの並べ替えに関するヒントと最適化の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。