PHPのksort関数について現役エンジニアが解説【初心者向け】

初心者向けにPHPのksort関数について現役エンジニアが解説しています。ksort関数とは連想配列をソート(配列要素の並び替え)する関数です。連想配列のキーを基準にソートを行います。ksort関数の書き方やソートフラグの使い方について解説します。

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営。初心者向けに解説した記事が4,000以上あります。現役エンジニアの方はこちらをご覧ください。

今回は、PHPのksort関数について、TechAcademyのメンター(現役エンジニア)が実際のコードを使用して初心者向けに解説します。

PHPについてそもそもよく分からないという方は、PHPとは何なのか解説した記事を読むとさらに理解が深まります。

 

なお本記事は、TechAcademyのオンラインブートキャンプ、PHP/Laravel講座の内容をもとに紹介しています。

 

田島悠介

今回は、PHPに関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

PHPのksort関数について詳しく説明していくね!

大石ゆかり

お願いします!

この記事は、PHPのksort関数の使用方法について記載した記事です。

連想配列の仕組みが理解できている人を前提に解説をしているので、連想配列についてよく分からないという方は、まず連想配列の定義方法やデータ構造についての知識を見につけてから当記事を見るとより理解が深まると思います。

目次

 

ksort関数とは

PHPのksort関数は、主に連想配列をソート(配列要素の並び替え)する関数です。

ksort関数は、KeyとValueのセットで構成される連想配列の元々のセットの関係を維持しつつ、Keyを基準にソートを行います。

ksort関数によるソートのイメージ:

ソート前)

Key Value
d 2
b 3
a 4
c 1

 

ソート後)

Key Value
a 4
b 3
c 1
d 2

 

[PR] PHPのプログラミングで挫折しない学習方法を動画で公開中

ksort関数の使い方

それでは、ksort関数の使用方法について見ていきましょう。

使用方法:

ksort($ソートする配列 [, $ソートフラグ])

 

ksort関数の第一引数には、ソートする対象の配列を渡します。

第二引数には、任意にソートフラグというソート方法を調整するフラグを渡すことができます。ソートフラグはPHPが予め用意している定数です。

ソートフラグには、以下の定数が用意されています。

ソートフラグ一覽:

SORT_REGULAR 

比較演算子を用いて昇順(小さい値から順番に)でソートする。例えば、アルファベットであれば、「a」から順に大きい値となり、数値であれば「0」から順に大きい値となる。

SORT_NUMERIC 

ソートする項目を数値として比較を行う。

SORT_STRING 

ソートする項目を文字列として比較を行う。

SORT_LOCALE_STRING 

現在のロケールに基づいて比較を行う。ロケールとは、 言語や時刻など地域固有の内容のデータを取得する際の識別子のことです(日本語: ja,  英語: en)。

例えば、日時の文字列を要素に含む配列をソートする際は現在設定されているロケールを元にソートされます。ちなみに日付は新しい日付のほうが大きい値として認識されるので、過去から順番にソートされます。

SORT_NATURAL 

文字列を「自然順」で比較してソートします。例えば、「image1, image2, image10」をソートという文字列を要素に含む配列をソートした場合、通常「image1, image10, image2」とソートされます。これは、image2の「2」とimage10の「1」の部分を文字列として比較した時に「1」のほうが小さいと判定されるからです。

これを「自然順」にソートを行うと「image1, image2, image10」という人が認識できる自然な形でソートされます。

SORT_FLAG_CASE 

上記に挙げたソートフラグと組み合わせで使用し、大文字・小文字を区別せずにソートします。

第二引数にソートフラグを設定しない場合は、デフォルトで設定されている、SORT_REGULARに従ってソートを行います。

ksort関数の返却値は、ソートが成功した場合には、boolean型のtrueを、ソートが失敗した場合には、boolean型のfalseを返却します。

実際に書いてみよう

それでは、ksort関数を使用して連想配列のKeyを基準に要素のソートを行う例を見ていきましょう。

サンプルコード:

<?php
// 連想配列の初期化
$array = ["d" => "1", "b" => "3", "a" => "4", "c" => "2"];

// ソート前、配列の中身を出力
print_r($array);

// Keyを基準に連想配列をソート
$success_flg = ksort($array);

// 上記のソート処理が成功していたらソートした配列の中身を出力
if($success_flg) {
 print_r($array);
}
?>

実行結果:

Array
(
    [d] => 1
    [b] => 3
    [a] => 4
    [c] => 2
)
Array
(
    [a] => 4
    [b] => 3
    [c] => 2
    [d] => 1
)

上記では、ksort関数を使用して連想配列$arrayをKeyを基準にソートしています。

実行結果を見ると、Keyがアルファベット順にソートされていることが確認できると思います。また、初めに設定していたKeyとValueのセットの内容は、ソート後でも変わらないことも確認してください。

まとめ

以上、ksort関数を使用して、Keyを基準に連想配列をソートする方法について解説しました。

連想配列のソートは、実際の開発でもよく使用するので、ksort関数によるソート方法をマスターしましょう。

筆者プロフィール

平野大輝(ひらのだいき)

スキル:PHP・Java・JavaScriptを用いて様々なアプリを開発するWebエンジニア。

 

大石ゆかり

内容分かりやすくて良かったです!

田島悠介

ゆかりちゃんも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

 

TechAcademyでは、初心者でも最短4週間で、PHPやフレームワークのLaravelを使ってWebアプリケーション開発を習得できる、オンラインブートキャンプを開催しています。

また、現役エンジニアから学べる無料体験も実施しているので、ぜひ参加してみてください。