PHPの配列のソートがわかる!usortや他のソート方法解説

こんにちは!独学プログラマー&ライターのつぶらやです。

PHPでデータを配列に入れたのはいいけど並び方がバラバラ
並び方も、昇順降順ではなくもっと複雑に並び替えたい

そんな時に有効な関数がusortなどのsort関数です。

本日は以下の内容でお話していきます。

usortで並び替え
キーを変えずに並び替える(uasort関数)
キーで並び替える(uksort関数)

usortで並び替え

usortはコールバック関数です。

関数の引数に、別の関数を指定します。

そして、指定した別の関数の結果で比較をする事で並び替えが実現します。

一次元配列ではない、多次元配列の並び替えの時に使用します。

サンプルコードで実際の動きを見ていきましょう。

コメントの数字は後で解説する箇所です。

tennis→tennis→swimming となっていた配列が、baseball→swimming→tennis と並び替わりました。

プログラムの流れは、

並び替えたいデータを配列に入れる

usortで関数を呼ぶ

関数で比較をして並び替えを行う

という流れです。

それではコードの解説をしていきます。

①usortで関数を呼ぶ

第一引数に並び替えたい配列、第二引数に関数名を指定します。

②呼んだ関数に引数を設定する

$right$leftという変数を設定していますが、これは何でしょうか。

どこにも出てきていませんね。

実は、この第一、第二引数の変数の名称は何でも構わないのです。

この中には、自動的に比較する配列のデータが入ってきます。

③strcmpで比較

strcmpはPHPの比較の関数です。

以下のように比較結果で返る値が違います。

第一引数 < 第二引数の時、負の整数を返す
第一引数 > 第二引数の時、正の整数を返す
第一引数 = 第二引数の時、0を返す

usortで呼んだ関数の戻り値は、負の整数正の整数0である必要があります。

ところで、usortでの並び替えの結果は配列のキーも並び替えによって変わってしまっていました。

次章から、

キーが変わらないように並び替える
キーで並び替え

を実現するためのusortの関連の関数について解説していきます。

キーを変えずに並び替える(uasort関数)

配列のキーが変わらないように並び替えるuasort関数です。

usortのサンプルコードを少しだけ変更して結果を見てみます。

比較した値の順番は並び替わりました。

そして配列のキーも元の値のままです。

配列のキーを変えたくないな場合に使いましょう。

キーで並び替える(uksort関数)

続いて、キーで並び替える関数、uksort関数の紹介です。

同じようにusortのサンプルコードを少し変更して結果を見てみます。

キー名で配列を並び替えることが出来ました。

まとめ

本日はPHPのusortについて解説しました。

配列の複雑な並び替えは少し理解するのが難しいかもしれません。

サンプルコードを実際に動かして理解を深めてください。

それでは、また。

未経験者でも安心の徹底サポート!まずは完全無料の体験レッスン!

「プログラミングに興味があるけど未経験だし、、、」とお悩みの方はご安心ください。

  • 24時間質問し放題
  • あなただけのオーダーメイドカリキュラムで学習の効率化
  • 仕事獲得方法からオリジナルアプリ開発方法

侍エンジニア塾では徹底したサポートによる「オーダーメイドカリキュラム」を作成しています。

まずは無料体験レッスンで、「挫折しない学習方法」や「あなただけの学習ロードマップ」を知り、学習の効率化をしましょう。独学の難点である「オリジナルアプリの作り方やエラーの対処法」についてもアドバイスさせていただきます。

詳しいサービス内容は、下記よりご参照ください。

cta_mtm1

LINEで送る
Pocket

書いた人

つぶらや

つぶらや

独学PG&SE、東京在住30代女性。
誰でもプログラマーになれるがモットーで、わかりやすい記事を目指しています。

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説