複数の列による多次元配列の並べ替え
多次元配列の並べ替えは、特に複数の基準を考慮する場合、困難な作業となることがあります。幸いなことに、PHP は、array_multisort 関数の形式で洗練されたソリューションを提供します。
多次元配列をソートするには、必要な列を抽出して array_multisort に渡す必要があります。各列は、SORT_ASC または SORT_DESC として指定されたソート順序で個別にソートされます。
たとえば、次の入力配列が与えられたとします。
$array = [ ['ID' => 1, 'title' => 'Boring Meeting', 'date_start' => '2010-07-30', 'event_type' => 'meeting', 'state' => 'new-york'], ['ID' => 2, 'title' => 'Find My Stapler', 'date_start' => '2010-07-22', 'event_type' => 'meeting', 'state' => 'new-york'], ['ID' => 3, 'title' => 'Mario Party', 'date_start' => '2010-07-22', 'event_type' => 'party', 'state' => 'new-york'], ['ID' => 4, 'title' => 'Duct Tape Party', 'date_start' => '2010-07-28', 'event_type' => 'party', 'state' => 'california'] ];
状態、次にイベントタイプ、最後にソートするにはdate_start では、次のコードを使用します。
# extract columns $state = array_column($array, 'state'); $event_type = array_column($array, 'event_type'); $date_start = array_column($array, 'date_start'); # sort by state desc, event_type asc, date_start asc array_multisort($state, SORT_DESC, $event_type, SORT_ASC, $date_start, SORT_ASC, $array);
PHP 5.5.0 では、 array_column を使用した簡略化された構文:
array_multisort( array_column($array, 'state'), SORT_DESC, array_column($array, 'event_type'), SORT_ASC, $array );
その結果、ソートされた配列は次のようになります:
[ ['ID' => 4, 'title' => 'Duct Tape Party', 'date_start' => '2010-07-28', 'event_type' => 'party', 'state' => 'california'], ['ID' => 3, 'title' => 'Mario Party', 'date_start' => '2010-07-22', 'event_type' => 'party', 'state' => 'new-york'], ['ID' => 2, 'title' => 'Find My Stapler', 'date_start' => '2010-07-22', 'event_type' => 'meeting', 'state' => 'new-york'], ['ID' => 1, 'title' => 'Boring Meeting', 'date_start' => '2010-07-30', 'event_type' => 'meeting', 'state' => 'new-york'], ];
array_multisort を利用することで、複数の列に基づいて多次元配列を効果的にソートし、データの整理と取得のための柔軟で強力なソリューション。
以上がPHP で「array_multisort」を使用して複数の列で多次元配列をソートするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。