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

PHP で多次元配列を複数の列でソートするにはどうすればよいですか?

Barbara Streisand
リリース: 2024-12-17 14:07:10
オリジナル
373 人が閲覧しました

How Can I Sort a Multidimensional Array by Multiple Columns in PHP?

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

複数の列による多次元配列の並べ替えは、困難な作業となる場合があります。ただし、PHP には、比較的簡単に実行できる関数の配列が用意されています。

そのような関数の 1 つが array_multisort() です。この関数を使用すると、複数の条件で同時に配列を並べ替えることができます。 array_multisort() を使用するには、まずソート列とそれに対応するデータの配列を作成する必要があります。

例を次に示します。

<?php
$mylist = array(
    array('ID' => 1, 'title' => 'Boring Meeting', 'date_start' => '2010-07-30', 'event_type' => 'meeting', 'state' => 'new-york'),
    array('ID' => 2, 'title' => 'Find My Stapler', 'date_start' => '2010-07-22', 'event_type' => 'meeting', 'state' => 'new-york'),
    array('ID' => 3, 'title' => 'Mario Party', 'date_start' => '2010-07-22', 'event_type' => 'party', 'state' => 'new-york'),
    array('ID' => 4, 'title' => 'Duct Tape Party', 'date_start' => '2010-07-28', 'event_type' => 'party', 'state' => 'california')
);

# get a list of sort columns and their data to pass to array_multisort
$sort = array();
foreach($mylist as $k => $v) {
    $sort['state'][$k] = $v['state'];
    $sort['event_type'][$k] = $v['event_type'];
    $sort['date_start'][$k] = $v['date_start'];
}

# sort by state asc, event_type desc, and date_start asc
array_multisort($sort['state'], SORT_ASC, $sort['event_type'], SORT_DESC, $sort['date_start'], SORT_ASC, $mylist);

print_r($mylist); // print the sorted array

?php>
ログイン後にコピー

PHP 5.5.0 では、次の簡略化された構文:

<?php
array_multisort(array_column($mylist, 'state'), SORT_ASC,
                array_column($mylist, 'event_type'), SORT_DESC,
                array_column($mylist, 'date_start'), SORT_ASC,
                $mylist);
?php>
ログイン後にコピー

$mylist 配列は、ご希望の順序

以上がPHP で多次元配列を複数の列でソートするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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