ITコラム

PHP 配列 ソート

PHP

2019.02.06

PHP【 配列 】配列のソート

新たなデータが追加された時などに 配列の各データを並べ替えておくと、後続処理がスムーズに進行する場合があります。
今回は PHP で配列の要素をソートする方法について紹介したいと思います。

配列についてはこちらの記事もご参照下さい。

PHP【 配列 】複数の値を保持するデータ構造
PHP【 配列 】配列にデータを追加
PHP【 配列 】配列からデータを削除
PHP【 配列 】count で要素数を取得
PHP【 配列 】配列のソート(本ページ)
PHP【 連想配列 】キーでデータを特定
PHP【 多次元配列 】配列の中に配列
PHP【 配列 】配列内のデータ検索
PHP【 配列 】要素を比較
PHP【 配列 】配列の結合
PHP【 配列 】in_array で値の存在チェック
PHP【 配列 】array_map で一括処理
PHP【 配列 】キーを取得
PHP【 配列 】array_filter でフィルター
PHP【 配列 】array_column で同一キーの値を取得
PHP【 配列 】foreach でループ処理
PHP【 配列 】array_unique で重複した値を削除
PHP【 配列 】便利な関数

 
尚、本サイトでは XAMPP( ザンプ )という開発環境を使用しています。
XAMPP のインストール方法や起動方法については以下の記事をご参照下さい。
PHP【 開発環境 】XAMPP インストール
PHP【 開発環境 】XAMPP の使い方

最終更新日:2019年2月6日

目次

1.sort 関数で昇順にソート
2.rsort 関数で降順にソート
3.natsort 関数で自然順にソート
 

1.sort 関数で昇順にソート

 
PHP の sort 関数を使用すると、配列の要素を昇順に並べ替えることができます。

sort 関数は、 次のように記述して使用します。

sort ( 配列 [, ソートフラグ ] )

引数の内容は以下の通りです。

配列
対象となる配列を指定

ソートフラグ
SORT_REGULAR:一般的な要素比較(初期値)
SORT_NUMERIC:数値として要素を比較
SORT_STRING:文字列として要素を比較
SORT_LOCALE_STRING:現在のロケールに基づいて要素を比較
SORT_NATURAL:文字列として要素を比較後、自然順にソート
SORT_FLAG_CASE:文字列の大文字小文字を区別しない(SORT_STRING 等と共に指定)

 

sort 関数を使用したサンプル

下記のようなソースファイルを作成して ブラウザからアクセスすると、次のような表示になります。
( ソースファイルの作成方法についてはソースファイルを作成を、サーバの起動方法等についてはサーバを起動を、それぞれご参照下さい。)

<pre>
<?php

  $name = array("かとう", "いがわ", "えぐち", "うえき", "おおたけ", "あおやま", "きうち");
  
  sort($name);

  print_r($name);

?>
</pre>

配列 $name 内の個々のデータが、「 sort($name) 」で あいうえお順の昇順に並び替えられます。

print_r 関数や <pre> ~ </pre> についてはprint_r で出力をご参照下さい。
 

SORT_NATURAL を指定

sort 関数の第 2 引数にソートフラグ「 SORT_NATURAL 」を指定すると、数字が混在した文字列のソート時などに 次のような違いが生じます。

<pre>
<?php

  $name = array("第1項目", "第2項目", "第10項目", "第100項目", "第13項目");
  
  sort($name);
  print_r($name);

  echo "<br>";

  sort($name, SORT_NATURAL);
  print_r($name);

?>
</pre>

数字が混在した文字列をそのままソートすると、数字の 2 よりも 10 や 100 の方が昇順として先に並べ替えられます。

これに対して、sort 関数の第 2 引数に「 SORT_NATURAL 」を指定すると、一般的に意図されるソート結果が得られます。

▲目次へ戻る

 

2.rsort 関数で降順にソート

 
rsort 関数を使用すると、配列の要素を降順に並べ替えることができます。 

rsort 関数は、 sort 関数と同様に記述して使用します。

rsort ( 配列 [, ソートフラグ ] )

引数の内容も sort 関数と同様です。

配列
対象となる配列を指定

ソートフラグ
SORT_REGULAR:一般的な要素比較(初期値)
SORT_NUMERIC:数値として要素を比較
SORT_STRING:文字列として要素を比較
SORT_LOCALE_STRING:現在のロケールに基づいて要素を比較
SORT_NATURAL:文字列として要素を比較後、自然順にソート
SORT_FLAG_CASE:文字列の大文字小文字を区別しない(SORT_STRING 等と共に指定)

▲目次へ戻る

 

3.natsort 関数で自然順にソート

 
数字が混在した文字列のソート時に sort 関数の第 2 引数に SORT_NATURAL を指定する方法がありますが、natsort 関数を使用してもそれと同様の結果を得ることができます。

natsort 関数は、配列の要素を自然順( Natural sort order )で並べ替える関数です。

natsort 関数は、 次のように記述して使用します。

natsort ( 配列 )

 

natsort 関数を使用したサンプル

数字が混在した文字列を、sort 関数と natsort 関数とでそれぞれソートすると 次のような違いが生じます。

<pre>
<?php

  $test = array("test_2", "test_12", "test_1", "test_100", "test_10");
  
  sort($test);
  print_r($test);

  echo "<br>";

  natsort($test);
  print_r($test);

?>
</pre>

数字が混在した文字列を sort 関数でソートすると 数字の 2 よりも 10 や 100 の方が昇順として先に並べ替えられますが、natsort 関数でソートすると 一般的に意図されるソート結果が得られます。

但し、sort 関数と違って、natsort 関数を使用した場合には 要素のインデックス番号が更新されない点に注意が必要です。

ソート後に要素のインデックス番号を使用して処理を行う場合等は、natsort 関数ではなくsort 関数の第 2 引数に SORT_NATURAL を指定してソートするようにしましょう。

print_r 関数や <pre> ~ </pre> についてはprint_r で出力をご参照下さい。

▲目次へ戻る

SHARE

最新記事

IMG_004

卒業生インタビュー

2019.08.20

【卒業生の声:渡邉さん】宮城の大学とプログラマカレッジへ通学を両立!限られた時間を有効活用し、希望するWEB系の会社へ内定。

受講スクール プログラマカレッジ 受講期間 3ヶ月間 料金 無料 就職先 某WEB系会社 プログラマカレッジ卒業生の渡邉さんにお話しをお伺いしました! 目次 新卒採用の切符を捨て、アイデアを形にできる仕事を目指す 質問が […]

続きを見る

DSC_3661

卒業生インタビュー

2019.08.16

【卒業生の声:前田さん】大学中退の未経験エンジニアが4社から内定獲得!初めての就活を成功させた秘訣とは?

受講スクール プログラマカレッジ 受講期間 3ヶ月間 料金 無料 就職先 株式会社リヴァンプ プログラマカレッジ卒業生のマエダさん(23歳)にお話しをお伺いしました! 目次 勉強に興味が持てなくて大学中退 就職できるか不 […]

続きを見る

DSC_0077

卒業生インタビュー

2019.08.08

【卒業生の声:オチアイさん】高校教師からプログラマーへ転身!最初の2ヶ月は理解に苦しむ日々。楽しめるまでに至った秘訣とは?

受講スクール プログラマカレッジ 受講期間 3ヶ月間 料金 無料 就職先 プライムソリューションズ株式会社 プログラマカレッジ卒業生のオチアイさんにお話しをお伺いしました! 目次 大学院卒業後は高校教師に そこから思い切 […]

続きを見る

無料相談する

INTERNOUS,inc. All rights reserved.