PHP開発では、多次元配列のソートを一般的に要求しています。合理的な選別方法をマスターすると、データ処理の効率とコードの読みやすさを効果的に改善できます。
学生の名前と成績を含む配列があるとします。最初に名前で昇順で並べ替え、次にグレードごとに降順で並べ替えたいと考えています。
$students = [
['name' => 'Alice', 'score' => 90],
['name' => 'Bob', 'score' => 85],
['name' => 'Charlie', 'score' => 95],
['name' => 'Dave', 'score' => 80],
];
比較関数を定義することにより、ソートルールを正確に制御できます。次の関数は最初に名前を比較し、同じ名前が結果を比較します。
function compare_students($a, $b) {
if ($a['name'] == $b['name']) {
return $b['score'] <=> $a['score']; // 結果の減少
}
return strcmp($a['name'], $b['name']); // 昇順の名前
}
usort()関数を呼び出して、ソートを完了します。
usort($students, 'compare_students');
PHP 7.4は、コードをより簡潔にするために、匿名関数の単純化された文章を導入します。
uasort($students, function($a, $b) {
if ($a['name'] == $b['name']) {
return $b['score'] <=> $a['score'];
}
return strcmp($a['name'], $b['name']);
});
比較関数は、2つの配列要素をパラメーターとして取得し、整数を返して順序関係を表します。ここでは、最初にstrcmp()を使用して、名前の昇順で並べ替えます。名前が同じ場合は、比較演算子<=>を使用して、成績の降順で並べ替えます。
ソートが完了した後、出力の結果は次のとおりです。
print_r($students);
アレイは名前でアルファベット順に配置され、同じ名前が使用されるとスコアは高から低に配置されます。
PHP多次元アレイソートのコアアイデアと方法を習得すると、開発者が複雑なデータソートの問題に柔軟に対処するのに役立ちます。カスタム比較関数とPHP組み込みのソート関数を組み合わせて、コードは簡潔で効率的です。