UI設計したり、ウェブシステムを開発したりします。 

SQL見るだけクエリ#029 二次元配列を指定カラムの条件で並び替え(array_multisort)PHP

記入日:2023-02-06 編集日:2023-02-06

SQL見るだけクエリ。今回は、二次元配列を指定カラムの条件で並び替えしてみようと思います。

並び替えには、array_multisortを使用ます。複数カラムの条件を設定してみようと思います。

以下の様な、動画リストの二次元配列があったとします。
この二次元配列を、日付順(date)、ID順(id)で、並び替えを行おうと思います。

以下事例

// 元となる二次元配列
$movie_list = [
  [
    'id' => 1,
    'title' => 'AAAAA',
    'date' => '2022-10-29',
  ],
  [
    'id' => 2,
    'title' => 'BBBBB',
    'date' => '2022-09-15',
  ],
  [
    'id' => 3,
    'title' => 'CCCCC',
    'date' => '2022-12-24',
  ],
  [
    'id' => 4,
    'title' => 'DDDDD',
    'date' => '2022-10-29',
  ],
];


// 動画のリストを取得をする 日付が新しい順、idの若い順
$movie_list = $movie_list;

// 第1条件設定(date)
$sort_date  = array_column($movie_list, 'date');

// 第2条件設定(id)
$sort_id = array_column($movie_list, 'id');

// $movie_list二次元配列を並び替えします。
// 第一優先は、$sort_dateの昇順、第二優先は、$sort_idの昇順で並び替えします。
// 並び替えの元となる$movie_listを最後の引数に設定します。
array_multisort($sort_date, SORT_ASC, $sort_id, SORT_ASC, $movie_list);

print_r($movie_list); 

結果は以下の様に、日付の古い順番に並び変わります。同一日付の場合は、IDの小さい方が先に並びます。

 Array
(
    [0] => Array
        (
            [id] => 2
            [title] => BBBBB
            [date] => 2022-09-15
        )

    [1] => Array
        (
            [id] => 1
            [title] => AAAAA
            [date] => 2022-10-29
        )

    [2] => Array
        (
            [id] => 4
            [title] => DDDDD
            [date] => 2022-10-29
        )

    [3] => Array
        (
            [id] => 3
            [title] => CCCCC
            [date] => 2022-12-24
        )

)

日付を新しいもの順にした場合は以下の様になります。

array_multisort($sort_date, SORT_DESC, $sort_id, SORT_ASC, $movie_list);
 Array
(
    [0] => Array
        (
            [id] => 3
            [title] => CCCCC
            [date] => 2022-12-24
        )

    [1] => Array
        (
            [id] => 1
            [title] => AAAAA
            [date] => 2022-10-29
        )

    [2] => Array
        (
            [id] => 4
            [title] => DDDDD
            [date] => 2022-10-29
        )

    [3] => Array
        (
            [id] => 2
            [title] => BBBBB
            [date] => 2022-09-15
        )

)

SQLの使いどころ

サイトに大量の情報を掲載することは、ユーザーにとってとても便利なことです。しかし、情報が多すぎると、目的の情報を見つけるのが困難になります。そのため、SQLを使用することで、情報を効率的に管理することができます。

SQLを使用することで、データベース内の情報を検索したり、フィルタリングしたりすることができます。これにより、ユーザーは目的の情報をスムーズかつ簡単に見つけることができます。

また、SQLを使用することで、データを集計したり、統合したりすることもできます。これにより、ユーザーはさまざまな視点から情報を分析することができます。つまり、サイトに多くの情報を掲載することが重要である一方で、その情報を効率的かつ簡単に管理することが求められる場合には、SQLが不可欠であるといえます。

KK

機械工学を専攻。工業デザイナーとして、国内及び海外の自動車・搬送ラインの設計などに従事した後、2003年にウェブシステム会社を設立。UI設計やウェブシステムの開発、DX化のディレクションなどを行っています。