多次元配列は、特に複数の列を考慮する必要がある場合、並べ替えが難しい場合があります。幸いなことに、PHP には array_multisort() 関数が用意されており、これを使用すると、複数の条件に基づいて配列を並べ替えることができます。
次の多次元配列について考えてみましょう:
[ ['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'] ]
私たちの目標は、これを並べ替えることです。配列は最初にstate、次にevent_type、最後にdate_startによって配列されます。これを実現するには、array_multisort() を使用します:
$sortData = []; foreach ($data as $key => $row) { $sortData['state'][$key] = $row['state']; $sortData['event_type'][$key] = $row['event_type']; $sortData['date_start'][$key] = $row['date_start']; } array_multisort($sortData['state'], SORT_ASC, $sortData['event_type'], SORT_ASC, $sortData['date_start'], SORT_ASC, $data);
PHP 5.5.0 以降のバージョンでは、array_column() 関数を使用して並べ替えプロセスを簡素化できます:
array_multisort(array_column($data, 'state'), SORT_ASC, array_column($data, 'event_type'), SORT_ASC, array_column($data, 'date_start'), SORT_ASC, $data);
並べ替えると、配列は次のようになります:
[ ['ID' => 4, 'title' => 'Duct Tape Party', 'date_start' => '2010-07-28', 'event_type' => 'party', 'state' => 'california'], ['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'], ['ID' => 3, 'title' => 'Mario Party', 'date_start' => '2010-07-22', 'event_type' => 'party', 'state' => 'new-york'] ]
以上がPHP で多次元配列を複数の列でソートするには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。