PHP では、2 次元配列のソートは非常に一般的なタスクです。大量のデータを扱う場合、配列をソートするとコードの効率が大幅に向上します。単一の配列の場合、sort() や rsort() などの関数を使用して昇順と降順で並べ替えることができます。ただし、2 次元配列の場合、並べ替えを実装するにはさらに多くのコードが必要です。この記事では、指定した列による並べ替え、複数列の並べ替え、カスタム 並べ替え関数など、PHP を使用して 2 次元配列を並べ替える方法を紹介します。
1. 指定した列による並べ替え
PHP の組み込み関数 usort() を使用して並べ替えを行うことができます。 usort() 関数は sort() 関数に似ていますが、並べ替えにカスタム関数を使用できます。指定した列で 2D 配列をソートするには、カスタム ソート関数を作成し、それを usort() 関数に渡す必要があります。以下は、2 次元配列の 2 番目の列でソートする簡単な例です:
<?php function sortBySecondColumn($a, $b) { return $a[1] - $b[1]; } $people = array( array('Tom', 23), array('Jack', 31), array('Mary', 27), ); usort($people, 'sortBySecondColumn'); print_r($people); ?>
出力は次のとおりです:
Array ( [0] => Array ( [0] => Tom [1] => 23 ) [1] => Array ( [0] => Mary [1] => 27 ) [2] => Array ( [0] => Jack [1] => 31 ) )
カスタム関数 sortBySecondColumn() は、配列 $a と 2 番目の列を比較します。 $b の列を選択し、昇順または降順に基づいて並べ替えます。 usort() 関数は、カスタム並べ替え関数に従って配列を並べ替えます。
2. 複数列の並べ替え
複数の列で並べ替える必要がある場合は、カスタム関数を少し変更して、各列にさらに条件を追加できます。配列を 1 列目と 2 列目で並べ替えるには、次のコードを参照してください:
<?php function sortByMultipleColumns($arr, $col1, $col2) { foreach ($arr as $key => $row) { $column1[$key] = $row[$col1]; $column2[$key] = $row[$col2]; } array_multisort($column1, SORT_ASC, $column2, SORT_DESC, $arr); return $arr; } $people = array( array('Tom', 31), array('Tom', 25), array('Mary', 27), array('Mary', 29), ); $people = sortByMultipleColumns($people, 0, 1); print_r($people); ?>
出力は次のようになります:
Array ( [0] => Array ( [0] => Mary [1] => 29 ) [1] => Array ( [0] => Mary [1] => 27 ) [2] => Array ( [0] => Tom [1] => 31 ) [3] => Array ( [0] => Tom [1] => 25 ) )
上記のコードでは、各列に配列と次に、array_multisort() 関数を使用して、最初の列を昇順で並べ替え、2 番目の列を降順で並べ替えます。最終的な使用では、並べ替えられた結果の元の配列が返されます。
3. カスタム並べ替え関数
カスタム並べ替え関数を使用する場合、配列内の各要素に対して並べ替え基準を定義できます。カスタム関数は、配列内の他の要素を比較するために使用される値を返す必要があります。この戻り値は、要素の比較方法に応じて、正、負、またはゼロになります。単純なフィルター関数の例を次に示します:
<?php function sortByLength($a, $b) { return strlen($a) - strlen($b); } $cities = array("Berlin", "Athens", "Madrid", "Rome", "Paris"); usort($cities, 'sortByLength'); print_r($cities); ?>
出力は次のとおりです:
Array ( [0] => Rome [1] => Paris [2] => Berlin [3] => Athens [4] => Madrid )
上の例では、配列の長さをそれぞれ比較するカスタム関数 sortByLength() を定義しました。要素を昇順に並べ替えて、正、負、またはゼロの数値を返します。
結論
PHP では、usort() 関数を使用して 2 次元配列を並べ替えます。指定した列でソートするには、カスタム ソート関数を作成して、それを usort() 関数に渡すだけです。複数の条件を追加して、複数の列で並べ替えることもできます。カスタム並べ替え関数を使用すると、配列内でさらに多くの並べ替え基準を定義できます。すべてのプログラマは、2 次元配列を操作する際にこれらのテクニックを熟知している必要があります。
以上がPHP を使用して 2D 配列をソートする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。