多次元配列ソートガイド: 組み込み関数: array_multisort(): 複数の列でソートします。 usort(): ユーザー定義の比較関数を使用して並べ替えます。カスタム関数: 再帰関数: ネストされた要素を再帰的に並べ替えます。自然な並べ替え: natsort() を使用して文字列要素を自然に並べ替えます。実際のケース: 多次元配列を平均グレード、名前、および最高グレードで並べ替えます。
#PHP 多次元配列の並べ替え: 包括的なガイドとベスト プラクティス
はじめに
PHP で多次元配列を扱う場合、ソートはよく遭遇する一般的なタスクです。この記事では、さまざまな多次元配列ソート手法を実践的な例とともに網羅した包括的なガイドを提供します。組み込み関数
1. array_multisort()
array_multisort() の使用関数を使用すると、多次元配列を複数の列に基づいて並べ替えることができます。構文は次のとおりです。
array_multisort($arr, SORT_ASC, SORT_DESC, ...);ここで、
は、並べ替える必要がある多次元配列です。
と
SORT_DESC は並べ替え順序 (昇順/降順) を指定します。
2. usort()
usort() 関数は、ユーザー定義の比較関数を使用して配列を並べ替えます。多次元配列の場合、カスタム比較関数は 2 つの配列の要素を比較する必要があります。構文は次のとおりです:
usort($arr, function($a, $b) { return strcmp($a['name'], $b['name']); });
カスタム関数
1。再帰関数
配列内のネストされた要素を再帰的に並べ替える必要がある場合は、再帰関数を使用できます。以下に例を示します:function sortMultiArrayRecursively($arr) { foreach ($arr as &$item) { if (is_array($item)) { sortMultiArrayRecursively($item); } } asort($arr); }
2. PHP の自然なソート
natsort() 関数は文字列を自然にソートできます (数値を考慮)。多次元配列の文字列要素には、次のコードを使用できます。
function sortMultiArrayNaturally($arr) { foreach ($arr as &$item) { if (is_array($item)) { sortMultiArrayNaturally($item); } else { $item = strval($item); } } natsort($arr); }
実践的な例
生徒の成績を含む多次元配列があるとします。
$students = [ [ 'name' => 'Alice', 'scores' => [85, 90, 95] ], [ 'name' => 'Bob', 'scores' => [92, 88, 91] ], [ 'name' => 'Charlie', 'scores' => [80, 85, 90] ] ];
平均評点で昇順に並べ替えます:
// 自定义比较函数 function cmpAverageScore($a, $b) { return (array_sum($a['scores']) / count($a['scores'])) < (array_sum($b['scores']) / count($b['scores'])); } // 排序 usort($students, 'cmpAverageScore');
名前で昇順に並べ替え、次に平均評点で降順に並べ替えます:
// 排序姓名 usort($students, function($a, $b) { return strcmp($a['name'], $b['name']); }); // 按平均成绩降序排序 array_multisort($students, SORT_DESC, SORT_REGULAR);
最高スコアで降順に並べ替えます:
function cmpMaxScore($a, $b) { return max($a['scores']) < max($b['scores']); } usort($students, 'cmpMaxScore');
結論
PHP の多次元配列の並べ替えテクニックを習得することは、並べ替えを可能にするために非常に重要です。複雑なデータをさまざまな方法で整理して分析します。この記事で提供されるガイダンスと実践的な例を使用すれば、次回多次元配列を扱うときにこれらのテクニックを自信を持って適用できます。以上がPHP 多次元配列のソート: 包括的なガイドとベスト プラクティスの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。