キーの存在を確認
CoddyのPHPジャーニー「基礎」セクションの一部。レッスン 45/71。
連想配列を扱うときは、値にアクセスする前に特定のキーが存在するかどうかを確認する必要がよくあります。存在しないキーにアクセスしようとするとエラーが発生する可能性があるため、PHP には最初に安全に確認するための array_key_exists() 関数が用意されています。
<?php
$person = [
"name" => "Alice",
"age" => 25
];
if (array_key_exists("name", $person)) {
echo "Name exists!";
}
if (array_key_exists("city", $person)) {
echo "City exists!";
} else {
echo "City not found";
}
?>この関数は、探しているキーと検索対象の配列という2つの引数を受け取ります。キーが存在する場合はtrueを返し、それ以外の場合はfalseを返します。そのため、条件文での使用に最適です。
このチェックは、user input や外部ソースからの data のように、すべての想定されるキーが存在することを保証できない、不完全な可能性のある data を扱う場合に特に役立ちます。
チャレンジ
簡単ユーザーデータを表す JSON オブジェクトを含む入力行を読み取ります(例: {"username": "john_doe", "email": "john@example.com", "age": 28})。
次に、さらに2つの入力を読み取ります。
- 文字列
key1- 確認する最初のキー - 文字列
key2- 確認する2番目のキー
JSON 入力から連想配列を作成し、次の処理を行います。
- 配列に
key1が存在するか確認します。存在する場合は、それに関連付けられた値を出力します。存在しない場合は、Key not foundを出力します。 - 配列に
key2が存在するか確認します。存在する場合は、それに関連付けられた値を出力します。存在しない場合は、Key not foundを出力します。
各結果を別々の行に出力します。
例:
入力が {"username": "john_doe", "email": "john@example.com", "age": 28}、username、phone の場合、出力は次のようになります。
john_doe
Key not found入力が {"title": "Manager", "department": "Sales"}、salary、department の場合、出力は次のようになります。
Key not found
Sales自分で試してみよう
<?php
// JSON入力を読み取る
$jsonInput = trim(fgets(STDIN));
$key1 = trim(fgets(STDIN));
$key2 = trim(fgets(STDIN));
// JSONを連想配列に変換する
$userData = (array)json_decode($jsonInput, true);
// TODO: 以下にコードを書いてください
// key1が存在するか確認し、値または指示どおりの正確なテキストを出力する
// key2が存在するか確認し、値または指示どおりの正確なテキストを出力する
?>このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
自分で練習してみよう: PHPオンラインコンパイラ