Menu
Coddy logo textTech

連想配列をキーでソート

CoddyのPHPジャーニー「論理とフロー」セクションの一部 — レッスン 23/68。

値でソートすることは便利ですが、時には連想配列をキーで整理する必要がある場合があります。PHPは、昇順のキー順序には ksort() を、降順のキー順序には krsort() を提供しており、どちらも重要なキーと値の関係を維持します。

ksort() を使用して、配列をそのキーに基づいてアルファベット順にソートする方法は以下の通りです:

<?php
$settings = [
    "theme" => "dark",
    "language" => "english", 
    "notifications" => "enabled",
    "auto_save" => "on"
];

ksort($settings);
print_r($settings);
// 出力: Array ( [auto_save] => on [language] => english [notifications] => enabled [theme] => dark )
?>

キーがAからZのアルファベット順に並び、各設定名とその値が正しくペアになったままであることに注目してください。これは、設定オプションやメニュー項目を予測可能で整理された方法で表示したい場合に特に便利です。

逆アルファベット順(降順)にするには、krsort() も同様に動作しますが、キーをZからAの順にソートします。どちらの関数も、他のPHPソート関数と同様に元の配列を直接変更するため、値の順序よりもキーの順序が重要なデータを整理するのに効率的です。

quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

challenge icon

チャレンジ

簡単

1つの入力を受け取ります。それは、部門名とその予算配分をJSON形式で表した連想配列です。入力を読み込み、JSON文字列を配列に変換し、ksort()を使用して部門をキーのアルファベット昇順でソートし、ソートされた配列をprint_r()を使用して出力してください。

入力形式: 部門名をキー、予算額を値とするJSONオブジェクトを含む1行(例:{"Marketing":75000,"IT":120000,"HR":65000,"Finance":95000}

期待される出力: 部門名(キー)のアルファベット昇順でソートされた連想配列を、print_r()を使用して表示したもの

チートシート

PHPには、キーと値の関係を維持しながら連想配列をキーでソートするための ksort() 関数と krsort() 関数が用意されています。

ksort() は、キーをアルファベットの昇順(AからZ)でソートします:

ksort($array);

krsort() は、キーをアルファベットの降順(ZからA)でソートします:

krsort($array);

どちらの関数も、元の配列を直接変更します:

<?php
$settings = [
    "theme" => "dark",
    "language" => "english", 
    "notifications" => "enabled",
    "auto_save" => "on"
];

ksort($settings);
print_r($settings);
// 出力: Array ( [auto_save] => on [language] => english [notifications] => enabled [theme] => dark )
?>

自分で試してみよう

<?php
// 入力を読み込む
$input = fgets(STDIN);

// JSONを配列に変換する
$departments = (array)json_decode($input, true);

// TODO: 以下に配列をキーでソートするコードを記述してください


// 結果を出力する
print_r($departments);
?>
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

論理とフローのすべてのレッスン