PHP配列のソート方法5選!初心者でもわかる詳解

PHPの配列をソートする方法を学ぶPHP
この記事は約5分で読めます。

【サイト内のコードはご自由に個人利用・商用利用いただけます】

この記事では、プログラムの基礎知識を前提に話を進めています。

説明のためのコードや、サンプルコードもありますので、もちろん初心者でも理解できるように表現してあります。

基本的な知識があればサンプルコードを活用して機能追加、目的を達成できるように作ってあります。

※この記事は、一般的にプロフェッショナルの指標とされる『実務経験10,000時間以上』を凌駕する現役のプログラマチームによって監修されています。

サイト内のコードを共有する場合は、参照元として引用して下さいますと幸いです

※Japanシーモアは、常に解説内容のわかりやすさや記事の品質に注力しております。不具合、分かりにくい説明や不適切な表現、動かないコードなど気になることがございましたら、記事の品質向上の為にお問い合わせフォームにてご共有いただけますと幸いです。
(送信された情報は、プライバシーポリシーのもと、厳正に取扱い、処分させていただきます。)

はじめに

PHPについて学び始めてみて、配列とそのソートについて深く理解したいと思ったことはありませんか?

本記事では、PHPの配列のソート方法を初心者向けに5つご紹介します。

これを読めば、配列のソート方法の基本を押さえ、それぞれの使い方や注意点、さらにはカスタマイズのアイデアまで得ることができます。

●PHPの配列とは

PHPの配列は、一連の値を一つの変数に格納するためのデータ構造です。

これらの値は、キーと値のペアとして保存され、キーを通じて値にアクセスできます。

配列はデータを効率的に管理し、繰り返し操作を簡単に行うことができます。

●配列のソート方法

PHPでは、配列のソートを行うための様々な関数が提供されています。

それぞれの関数を使用したソート方法を紹介します。

○サンプルコード1:sort関数を使う

sort関数は、配列の値を昇順にソートします。

この例では、数値の配列を昇順に並べ替えています。

$numbers = array(4, 2, 9, 6);
sort($numbers);
print_r($numbers);

○サンプルコード2:rsort関数を使う

rsort関数は、配列の値を降順にソートします。

この例では、数値の配列を降順に並べ替えています。

$numbers = array(4, 2, 9, 6);
rsort($numbers);
print_r($numbers);

○サンプルコード3:asort関数を使う

asort関数は、配列の値を昇順にソートしますが、元のキーと値の関連性を保持します。

この例では、連想配列を昇順に並べ替え、キーと値の関連性を保っています。

$fruit = array("d"=>"lemon", "a"=>"orange", "b"=>"banana", "c"=>"apple");
asort($fruit);
print_r($fruit);

○サンプルコード4:ksort関数を使う

ksort関数は、配列のキーを基に昇順にソートします。

この例では、連想配列をキーで昇順に並べ替えています。

$fruit = array("d"=>"lemon", "a"=>"orange", "b"=>"banana", "c"=>"apple");
ksort($fruit);
print_r($fruit);

○サンプルコード5:usort関数を使う

usort関数は、ユーザー定義の比較関数を使用して配列の値をソートします。

この例では、文字列の長さで配列をソートしています。

function sortByLength($a, $b) {
    return strlen($a) - strlen($b);
}

$fruit = array("orange", "banana", "apple", "lemon");
usort($fruit, "sortByLength");
print_r($fruit);

●応用例とサンプルコード

基本的なソート関数を理解したところで、次に応用例をいくつか見てみましょう。

○サンプルコード6:ユーザー定義関数でソート

usort関数に加えて、uasortやuksort関数もまたユーザー定義の比較関数を用いて配列をソートします。

この例では、uasort関数を使用して、値を昇順にソートしつつ、元のキーと値の関連性を保っています。

function sortByValue($a, $b) {
    return $a - $b;
}

$numbers = array("a" => 4, "b" => 2, "c" => 9, "d" => 6);
uasort($numbers, "sortByValue");
print_r($numbers);

○サンプルコード7:多次元配列のソート

多次元配列のソートは少し複雑ですが、array_multisortやusort関数とユーザー定義の比較関数を組み合わせることで可能です。

この例では、社員のデータを格納した多次元配列を、社員の年齢でソートしています。

function sortByAge($a, $b) {
    return $a['age'] - $b['age'];
}

$employees = array(
    array('name' => 'John', 'age' => 35),
    array('name' => 'Jane', 'age' => 30),
    array('name' => 'Robert', 'age' => 40),
);
usort($employees, 'sortByAge');
print_r($employees);

●注意点と対処法

配列をソートする際には、いくつかの注意点があります。まず、PHPのソート関数は基本的に元の配列を変更します。

そのため、ソート前の配列を保持したい場合は、事前に配列のコピーを作成することが重要です。

また、多次元配列のソートはやや複雑であり、適切なソート関数を使用することが求められます。

●カスタマイズ方法

PHPの配列ソート関数は非常に強力で柔軟性があり、ユーザー定義の比較関数を使えば、ほぼ任意のソート順序を実現することができます。

例えば、特定の値を配列の最初や最後に移動させたり、自然順ソートを実現したり、カスタムの比較ロジックを使用したりできます。

まとめ

PHPの配列ソートは、初めて使うときは少し複雑に感じるかもしれませんが、その多様性と強力さは理解すれば理解するほど魅力的に感じられるでしょう。

基本的なソート関数から始めて、ユーザー定義の比較関数を使ったソート、多次元配列のソートに至るまで、さまざまなソート方法を試してみてください。