カテゴリ: PHP 更新日: 2025/12/04

PHPの配列をソートする方法!sort, rsort, asort, ksortの使い方を丁寧に解説します!

PHP の配列をソートする方法(sort, rsort, asort, ksort)
PHP の配列をソートする方法(sort, rsort, asort, ksort)

新人と先輩の会話形式で理解しよう

新人

「PHPで配列を使っているのですが、要素を並び替える方法はありますか?」

先輩

「あるよ!PHPには配列を並び替えるための便利な関数がいくつかあるんだ。例えば、昇順や降順にソートできるsort()rsort()があるよ。」

新人

「具体的にどんな風に使うのですか?」

先輩

「じゃあ、基本的な使い方を詳しく見ていこう!」

-

1. 配列のソートとは?

1. 配列のソートとは?
1. 配列のソートとは?

ソートとは、データを一定の順序に並び替えることを意味します。例えば、数値の小さい順(昇順)や、大きい順(降順)、または名前のアルファベット順などに並び替えることができます。

PHPには、配列を簡単にソートするための関数が用意されています。

  • sort(): 配列を昇順(小さい順)に並び替える
  • rsort(): 配列を降順(大きい順)に並び替える
  • asort(): 連想配列を値の昇順に並び替える
  • ksort(): 連想配列をキーの昇順に並び替える

それでは、sort()rsort()の基本的な使い方を見ていきましょう。

2. PHPで配列をソートする基本的な方法(sort と rsort)

2. PHPで配列をソートする基本的な方法(sort と rsort)
2. PHPで配列をソートする基本的な方法(sort と rsort)

2.1 sort() を使って昇順に並び替える

sort()を使うと、配列の要素を小さい順に並び替えます。


<?php
$numbers = [5, 2, 8, 1, 3];

sort($numbers);
print_r($numbers);
?>

Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 5
    [4] => 8
)

このように、sort()を使うと、数値を小さい順に並び替えることができます。

2.2 rsort() を使って降順に並び替える

rsort()を使うと、配列の要素を大きい順に並び替えます。


<?php
$numbers = [5, 2, 8, 1, 3];

rsort($numbers);
print_r($numbers);
?>

Array
(
    [0] => 8
    [1] => 5
    [2] => 3
    [3] => 2
    [4] => 1
)

このように、rsort()を使うと、数値を大きい順に並び替えることができます。

2.3 文字列のソート

文字列の配列をsort()でソートすると、アルファベット順に並び替えられます。


<?php
$fruits = ["banana", "apple", "cherry", "grape"];

sort($fruits);
print_r($fruits);
?>

Array
(
    [0] => apple
    [1] => banana
    [2] => cherry
    [3] => grape
)

このように、sort()は文字列をアルファベット順に並び替えます。

2.4 文字列を降順に並び替える

文字列を降順(Z→Aの順)に並び替えるには、rsort()を使います。


<?php
$fruits = ["banana", "apple", "cherry", "grape"];

rsort($fruits);
print_r($fruits);
?>

Array
(
    [0] => grape
    [1] => cherry
    [2] => banana
    [3] => apple
)

このように、rsort()を使うと、アルファベットの降順に並び替えることができます。

次のセクションでは、連想配列をソートする方法(asort()ksort())を詳しく解説します。

3. 連想配列のソート方法(asort と arsort)

3. 連想配列のソート方法(asort と arsort)
3. 連想配列のソート方法(asort と arsort)

連想配列は、キーと値のペアでデータを管理する配列です。通常の配列とは異なり、sort()rsort() を使用すると、キーと値の関連が崩れてしまいます。そこで、連想配列の値を基準にソートするには asort()arsort() を使用します。

3.1 asort() を使った値の昇順ソート

asort() を使用すると、連想配列の値を昇順(小さい順)に並び替えます。


<?php
$users = [
    "田中" => 35,
    "佐藤" => 28,
    "鈴木" => 42
];

asort($users);

print_r($users);
?>

Array
(
    [佐藤] => 28
    [田中] => 35
    [鈴木] => 42
)

このように、値を基準にして昇順に並び替えられます。

3.2 arsort() を使った値の降順ソート

arsort() を使用すると、連想配列の値を降順(大きい順)に並び替えます。


<?php
arsort($users);

print_r($users);
?>

Array
(
    [鈴木] => 42
    [田中] => 35
    [佐藤] => 28
)

このように、値を基準にして降順に並び替えられます。

4. 配列をキーでソートする方法(ksort と krsort)

4. 配列をキーでソートする方法(ksort と krsort)
4. 配列をキーでソートする方法(ksort と krsort)

連想配列をキーの順番で並び替えたい場合は ksort()krsort() を使用します。

4.1 ksort() を使ったキーの昇順ソート

ksort() を使用すると、キーを昇順(アルファベット順・五十音順)に並び替えます。


<?php
$users = [
    "鈴木" => 42,
    "佐藤" => 28,
    "田中" => 35
];

ksort($users);

print_r($users);
?>

Array
(
    [佐藤] => 28
    [田中] => 35
    [鈴木] => 42
)

このように、キーの順番で昇順に並び替えられます。

4.2 krsort() を使ったキーの降順ソート

krsort() を使用すると、キーを降順(逆五十音順)に並び替えます。


<?php
krsort($users);

print_r($users);
?>

Array
(
    [鈴木] => 42
    [田中] => 35
    [佐藤] => 28
)

このように、キーを基準にして降順に並び替えられます。

-

5. 数値と文字列のソートの違い

5. 数値と文字列のソートの違い
5. 数値と文字列のソートの違い

PHPのソート関数は、数値と文字列を区別せずに処理します。しかし、データの型によって思わぬ結果になることがあります。

5.1 数値のソート

数値の配列をsort()でソートすると、通常は期待通りの動作をします。


<?php
$numbers = [100, 2, 50, 20];

sort($numbers);

print_r($numbers);
?>

Array
(
    [0] => 2
    [1] => 20
    [2] => 50
    [3] => 100
)

このように、数値はそのまま昇順に並び替えられます。

5.2 文字列の数値としてのソート

文字列の数値をsort()でソートすると、予期しない結果になることがあります。


<?php
$numbers = ["100", "2", "50", "20"];

sort($numbers);

print_r($numbers);
?>

Array
(
    [0] => 100
    [1] => 2
    [2] => 20
    [3] => 50
)

このように、文字列として扱われるとアルファベット順になり、意図した並び順にならない場合があります。

5.3 SORT_NUMERIC を使う

数値として正しく並び替えるには、SORT_NUMERIC フラグを指定します。


<?php
$numbers = ["100", "2", "50", "20"];

sort($numbers, SORT_NUMERIC);

print_r($numbers);
?>

Array
(
    [0] => 2
    [1] => 20
    [2] => 50
    [3] => 100
)

このように、SORT_NUMERIC を指定すると、文字列の数値も正しく数値として並び替えられます。

次のセクションでは、ユーザー定義関数を使ったソート方法について解説します。

6. ユーザー定義関数を使ったソート(usort)

6. ユーザー定義関数を使ったソート(usort)
6. ユーザー定義関数を使ったソート(usort)

PHPの組み込みソート関数(sort(), rsort(), asort(), ksort() など)は基本的なソートに便利ですが、独自のルールで並び替えをしたい場合には usort() を使用します。

6.1 usort() を使ったカスタムソート

usort() を使うと、自分で定義した比較関数を使ってソートできます。例えば、数値の配列を偶数優先で並べたい場合、以下のように記述します。


<?php
$numbers = [10, 3, 2, 8, 7, 5, 4];

usort($numbers, function ($a, $b) {
    // 偶数を先に、次に奇数を並べる
    if ($a % 2 === 0 && $b % 2 !== 0) {
        return -1;
    } elseif ($a % 2 !== 0 && $b % 2 === 0) {
        return 1;
    } else {
        return $a - $b;
    }
});

print_r($numbers);
?>

Array
(
    [0] => 2
    [1] => 4
    [2] => 8
    [3] => 10
    [4] => 3
    [5] => 5
    [6] => 7
)

このように usort() を使うことで、独自のソートルールを適用できます。

7. ソートを活用した実践的な例(データ一覧の表示)

7. ソートを活用した実践的な例(データ一覧の表示)
7. ソートを活用した実践的な例(データ一覧の表示)

ソートを実際の開発で活用する例として、PHPでデータ一覧を並び替えて表示する方法を紹介します。

7.1 ユーザー一覧を年齢順に並び替える

ユーザーの一覧を年齢順に並べる例を見てみましょう。


<?php
$users = [
    ["name" => "田中", "age" => 30],
    ["name" => "佐藤", "age" => 25],
    ["name" => "鈴木", "age" => 40]
];

usort($users, function ($a, $b) {
    return $a["age"] - $b["age"];
});

foreach ($users as $user) {
    echo "名前: {$user["name"]}, 年齢: {$user["age"]}歳\n";
}
?>

名前: 佐藤, 年齢: 25歳
名前: 田中, 年齢: 30歳
名前: 鈴木, 年齢: 40歳

このように、usort() を使うと、年齢順に並べ替えて一覧を表示できます。

7.2 商品リストを価格順に並び替える

商品リストを価格の安い順に並び替える例を紹介します。


<?php
$products = [
    ["name" => "ノートパソコン", "price" => 120000],
    ["name" => "スマートフォン", "price" => 80000],
    ["name" => "イヤホン", "price" => 5000]
];

usort($products, function ($a, $b) {
    return $a["price"] - $b["price"];
});

foreach ($products as $product) {
    echo "商品名: {$product["name"]}, 価格: {$product["price"]}円\n";
}
?>

商品名: イヤホン, 価格: 5000円
商品名: スマートフォン, 価格: 80000円
商品名: ノートパソコン, 価格: 120000円

このように、価格順に並び替えて表示することができます。

8. PHP の配列操作を学ぶためのおすすめの方法

8. PHP の配列操作を学ぶためのおすすめの方法
8. PHP の配列操作を学ぶためのおすすめの方法

PHPの配列のソートをさらに深く学ぶためのおすすめの方法を紹介します。

8.1 公式ドキュメントを読む

PHPの公式マニュアルには、配列のソートに関する詳細な情報が掲載されています。

8.2 オンライン学習サイトを活用する

実際に手を動かしながら学ぶことで、理解が深まります。

8.3 練習問題を解いてみる

プログラミングの練習問題を解くことで、配列のソートを実践的に学ぶことができます。

PHPの配列ソートをしっかり学ぶことで、データの管理がより便利になります。実際にコードを書いて試しながら、理解を深めていきましょう!

まとめ

まとめ
まとめ

本記事では、PHPの配列ソートに関する代表的な関数を一通り学びました。sort()rsort()による昇順・降順ソートから始まり、asort()arsort()ksort()krsort()といった連想配列のキーや値を軸とした並び替えまでを網羅しました。さらに、usort()を使ったカスタムソートでは、実践的な場面で活用できる柔軟な配列処理も体験しました。

例えば、下記のようにusort()で年齢順にユーザーを並び替えるコードは、実務でもよく使われる形です。


<?php
$users = [
    ["name" => "佐藤", "age" => 25],
    ["name" => "田中", "age" => 30],
    ["name" => "鈴木", "age" => 40]
];

usort($users, function($a, $b) {
    return $a["age"] - $b["age"];
});

print_r($users);
?>

ソート処理は単なる並び替えにとどまらず、データの可視化・レポート作成・ユーザー体験の向上にも直結する重要な機能です。PHPでは、数値・文字列・連想配列・オブジェクト配列など、さまざまな形式のデータに柔軟に対応したソート関数が提供されているため、適材適所で使い分けることで効率的な実装が可能となります。

特にSORT_NUMERICなどのフラグを活用することで、文字列と数値の曖昧な処理を防ぎ、より正確で信頼性の高いソート処理が実現できます。

本記事で紹介したサンプルコードを実際に試しながら学ぶことで、配列の構造やソートのロジックに対する理解が深まり、今後の開発にも活かせるスキルとなるでしょう。PHPの配列処理はプログラミング初心者にもやさしく、かつ奥が深い分野ですので、繰り返し練習することで自然に身につけることができます。

また、データベースや外部APIから取得した情報をソートして表示するケースでも、今回のようなソート処理は役立ちます。現場で活用する機会は非常に多いため、基礎を確実に押さえておきましょう。

先生と生徒の振り返り会話

新人

「配列のソート関数、たくさんあって最初は混乱しましたが、整理してみると使い分けが見えてきました!」

先輩

「そのとおり。sort()rsort()は基本の並び替え、asort()ksort()は連想配列用、そしてusort()はカスタムロジックだね。」

新人

「特にusort()は、実務で柔軟に対応できそうだと思いました。ユーザー一覧を年齢や名前順に並び替える場面とか…」

先輩

「そうだね。PHPのソート関数は思っている以上に奥深いよ。条件を変えて、いろんな並び替えを試してみるともっと理解が深まるよ。」

新人

「次はソート結果をHTMLテーブルで表示することも試してみます!」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

PHPのsort関数とrsort関数の違いは何ですか?昇順と降順の使い分け方も知りたいです。

PHPのsort関数は配列を昇順(小さい順)に並び替える関数で、rsort関数は降順(大きい順)に並び替える関数です。数値や文字列を並び替えるときに、昇順にしたい場合はsort、降順にしたい場合はrsortを使いましょう。

PHPで文字列の配列をアルファベット順に並び替えるにはどうすればいいですか?

PHPでは、文字列の配列もsort関数を使うことでアルファベット順(A→Z)に並び替えることができます。逆にZ→Aに並び替えたい場合はrsort関数を使います。
コメント
コメント投稿は、ログインしてください

まだ口コミはありません。

カテゴリの一覧へ
新着記事
New1
PHP
PHPのCookieセキュリティを完全ガイド!初心者でもわかるSecureとHttpOnlyの使い方
New2
PHP
PHPのCSRF対策を完全理解!トークンを使った安全なフォーム送信の仕組みを初心者向けに徹底解説
New3
PHP
PHPのSQLインジェクション対策を完全解説!初心者でも安全にデータベースを扱う方法
New4
PHP
PHPでカウントダウンタイマーを作る方法!初心者向けにやさしく解説
-
人気記事
No.1
Java&Spring記事人気No1
Python
Pythonでテキストファイルを1行ずつ読み込む方法(readline() / readlines())
No.2
Java&Spring記事人気No2
Python
Pythonのリストの重複を削除する方法を解説!初心者向けにsetとdict.fromkeysの使い方をやさしく説明
No.3
Java&Spring記事人気No3
PHP
初心者向けPHPでMySQLからデータを取得する方法(SELECT文)完全ガイド
No.4
Java&Spring記事人気No4
PHP
PHPのXSS対策を完全ガイド!初心者でもわかる安全なWebアプリの作り方
No.5
Java&Spring記事人気No5
Python
Pythonで経過時間を測る方法をやさしく解説!初心者向けtime.perf_counterとtime.sleepの使い方
No.6
Java&Spring記事人気No6
PHP
PHPのOAuth認証をやさしく解説!Google・Facebookログインを初心者向けに実装しよう
No.7
Java&Spring記事人気No7
Python
Pythonでエラースタックトレースを表示・取得する方法を徹底解説!初心者向け例外処理入門
No.8
Java&Spring記事人気No8
PHP
PHPでZipファイルを作成・展開する方法を初心者向けに解説!ZipArchiveクラスを使った圧縮・解凍の基本
-
-