ホームページ > バックエンド開発 > PHPチュートリアル > PHP で「array_multisort」を使用して複数の列で多次元配列をソートするにはどうすればよいですか?

PHP で「array_multisort」を使用して複数の列で多次元配列をソートするにはどうすればよいですか?

Patricia Arquette
リリース: 2024-12-31 06:26:09
オリジナル
960 人が閲覧しました

How can I sort a multidimensional array in PHP by multiple columns using `array_multisort`?

複数の列による多次元配列の並べ替え

多次元配列の並べ替えは、特に複数の基準を考慮する場合、困難な作業となることがあります。幸いなことに、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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート