Menu
Coddy logo textTech

Check if Key Exists

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 を返します。これにより、条件分岐文での使用に最適です。

このチェックは、ユーザー入力や外部ソースからのデータなど、不完全かもしれないデータに対処する場合に特に有用です。期待されるすべてのキーが存在することを保証できないためです。

challenge icon

チャレンジ

簡単

ユーザー情報を表す JSON オブジェクトを含む入力行を読み取ります(例: {"username": "john_doe", "email": "john@example.com", "age": 28})。

次に、さらに 2 つの入力を読み取ります:

  • 文字列 key1 - チェックする最初のキー
  • 文字列 key2 - チェックする 2 番目のキー

JSON 入力から連想配列を作成し、次に:

  1. key1 が配列に存在するかをチェックします。存在する場合、それに関連付けられた値を印刷します。存在しない場合、Key not found を印刷します。
  2. 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

チートシート

アクセス前に連想配列に特定のキーが存在するかをチェックするために 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 を返します。

自分で試してみよう

<?php
// JSON入力を読み取る
$jsonInput = trim(fgets(STDIN));
$key1 = trim(fgets(STDIN));
$key2 = trim(fgets(STDIN));

// JSONを連想配列に変換する
$userData = (array)json_decode($jsonInput, true);

// TODO: 以下にコードを記述してください
// key1が存在するかをチェックし、値を出力するか "Key not found" を出力

// key2が存在するかをチェックし、値を出力するか "Key not found" を出力

?>
quiz icon腕試し

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

基礎のすべてのレッスン