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つの引数を取ります。探しているキーと、検索対象の array です。キーが存在する場合は true を返し、存在しない場合は false を返します。これにより、条件文での使用に最適となります。
このチェックは、ユーザー入力や外部ソースからのデータのように不完全な可能性があるデータを扱う際に特に有用であり、期待されるすべてのキーが存在していることを保証できない場合に役立ちます。
チャレンジ
簡単ユーザー データを表す JSON オブジェクトが含まれる入力行を 1 行読み込みます (例: {"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が存在するかを確認し、値または指示の正確なテキストを出力する
?>このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
4Comparison & Logical Operators
Comparison OperatorsEquality & IdentityLogical Operators Part 1Logical Operators Part 2Recap - Simple Logic7Arrays Part 2 - Associative
Intro to Associative ArraysAccessing Values by KeyModifying Values by KeyAdding New Key-Value PairsCheck if Key ExistsRecap - Key-Value Data Store2Variables and Data Types
NumbersStrings and QuotesBooleansNaming ConventionsRecap - Variable InitEmpty VariablesString ConcatenationGetting User InputCast to Different Types3Basic Operators
Arithmetic OperatorsModulo OperatorExponentiation OperatorCombined AssignmentIncrement/DecrementOperator PrecedenceRecap - Simple CalculationsString Operators自分で練習してみよう: PHPオンラインコンパイラ