カテゴリ: PHP 更新日: 2025/06/26

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

コメント
コメント投稿は、ログインしてください

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

カテゴリの一覧へ
新着記事
Pythonのエラーメッセージの読み方!よくあるエラーと解決方法
PHPの関数(function)の基本を完全ガイド!初心者でもわかる使い方
Pythonの条件式でNoneを判定する方法!is None vs == None の違い
Pythonのpass文とは?一時的なコードブロックをスキップする方法
人気記事
No.1
Java&Spring記事人気No1
PHPの配列をソートする方法!sort, rsort, asort, ksortの使い方を丁寧に解説します!
No.2
Java&Spring記事人気No2
PHPとは?初心者向けにわかりやすく解説
No.3
Java&Spring記事人気No3
PHPの関数(function)の基本を完全ガイド!初心者でもわかる使い方
No.4
Java&Spring記事人気No4
PHP の文字列の基本操作(連結・切り出し・長さ)の使い方
-