🐘

【PHP】多次元配列のソート:連想配列の配列のキーを指定し並び替える!

2023/06/10に公開

はじめに

今回は以下のような連想配列の配列をキーを指定して並び替える方法を消化させていただきます!

この記事を見るメリット

  • phpの多次元配列のソート方法が分かるようになる!
  • array_multisortの使用方法
  • array_columnの使用方法

対象者

この記事は下記のような人を対象にしています。

  • プログラミング初学者
  • 駆け出しエンジニア
  • PHPで多次元配列を並び替えたい方
  • 並び替えのヘルパ関数がないフレームワークを使用している方

結論

  1. array_column: 多次元配列から特定のキーの値の配列を作成する
  2. array_multisort: 1のarray_columnで作成した配列の値を元に並び替えをする
array_multisort(array_column(配列, 'キー名'), SORT_DESC or SORT_ASC, 並び替えたい配列)

解説

実際に使用する!

以下の配列をageの降順に並び替えてみようと思います。

$users = [
    [
        'name' => 'ねこ',
        'age' => 19,
    ],
    [
        'name' => 'いぬ',
        'age' => 13,
    ],
    [
        'name' => 'ぼく',
        'age' => 21,
    ]
];

array_column()

array_column()は配列や多次元配列から、特定のキーに関連付けられた値を抽出するための便利な関数です。
以下のように、引数として与えられた配列から指定したキーの値を抽出して新しい配列を作成します。
第一引数: 元となる配列
第二引数: 抽出したい値のキー名

array_column($users, 'age')

// 以下出力結果
Array
(
    [0] => 19
    [1] => 13
    [2] => 21
)

array_multisort()

array_multisort()は、引数の値を元に配列をソートする便利な関数です。
第一引数の配列の値を基準に、降順か昇順かを指定して並び替えることができます!
第一引数: 並び替えたい基準の値の配列
第二引数: SORT_DESCSORT_ASCで降順か昇順を指定
第三引数: 元となる配列

// $usersをageの降順で並び替え
$ageArray = array_column($users, 'age');
array_multisort($ageArray, SORT_DESC, $users);

// $usersの出力結果
Array
(
    [0] => Array
        (
            [name] => ぼく
            [age] => 21
        )

    [1] => Array
        (
            [name] => ねこ
            [age] => 19
        )

    [2] => Array
        (
            [name] => いぬ
            [age] => 13
        )

)

おわりに

今回はarray_columnarray_multisortを使用して、多次元配列を並び替える方法を紹介させていただきました!
Laravelなどのフレームワークを使用していない案件でも、元の言語の知識があればなんでもできるものですね!

また、今回久しぶりに技術記事を書かせていただきました!
これからも実務や学習で身についた知識をどんどん発信していこうと思います。

最後まで記事を見てくださりありがとうございました。
誤字や脱字、コードのリファクタリングできる箇所などがありましたらコメントくださるとありがたいです!
また、いいねをしてくださると、筆者が喜びます:)

Discussion