[PHP] 連想配列のソートで便利に使える”array_multisort”

Pocket
LINEで送る
GREE にシェア
LinkedIn にシェア

自宅にAmazonから注文していたダンボールがいくつか届いて並べていると、どうしても頭の中が配列のイメージになってきます。
 

プログラム教育の時に配列を箱を書いて説明するアレですね。
 

プログラムを上達させようとする時に、配列を極めなければいけません。
 

データ管理は、ライブラリやSQLなどのデータベースに任せておけばいい・・・なんていう甘っちょろい考えをしている人は、確実に上達できません。
 

そもそも、データベースから取得したデータの扱いこそがプログラムの真骨頂なんですからね。
 

そんな配列にも、多重配列、連想配列、多重連想配列、などなど、より複雑な形式になった時のソート操作を行う必要があり、”array_multisort”を使ってみて、便利に使えることが分かったので、理解した内容をブログに記載しておきます。
 

ただしこのやり方はPHPのみに限られてしまうので、他の言語においてはまたベット調査することにしましょう。

PHP配列のソートの基本

PHPは配列のソートを行うのにたくさんの関数が用意されています。
 

http://php.net/manual/ja/array.sorting.php
 

sort() , rsort() , asort , arsort() , ksort() , krsort() , usort() , uasort() , uksort() , natsort() , natcasesort() , array_multisort() , shuffle()

 

なんと13種類もあるんですね。
 

通常の1階層配列であれば、sort()とrsort()の2つが使えれば何の問題もないのですが、連想配列で多重配列などの場合には、これだけでは難しいですね。
 

もちろん、便利関数を使わずに、自分でアルゴリズムを書き込む方法もありますが、せっかくある便利関数を覚えて効率化するのも悪くはありません。
 

アルゴリズム構築は時間がある余暇でやることにしましょう。仕事では効率一番・・・

array_multisortの使い方

以下のような配列がある場合にいくつかのソートをしたい場合があります。
 

 

家計簿のデータのサンプルですが、フルーツを購入した記録データを見立ててます。
 

これを表示する時に、購入日順にする場合と、料金の高い順にする場合、名前の文字列順にするパターンと、様々なソート方法が想像できます。
 

とりあえず、すべてやってみると以下のような感じです。
 

 

実行結果

 

名前順

 

値段順

 

購入日順順

 

array_multisortの”SORT_ASC”の部分は、昇順ソートをする命令になっていて、”SORT_ASC”とすると降順ソートすることができます。
 

SQLから取得したデータを並び替えする時に非常に便利に使えそうですね。
 

配列操作を鍛えると、データ管理能力がどんどんアップするので、より複雑なデータ管理ができるように日々勉強しなければいけませんね。
 

Leave a Reply

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です