Null Coalescing Operator
CoddyのPHPジャーニー「基礎」セクションの一部 — レッスン 31/71。
null 合体演算子 (??) は、変数が null であるか存在しない場合にデフォルト値を使用するための便利な方法を提供します。これは、欠落している可能性のあるデータで作業する際に特に便利です。
この構文は、チェックする変数とフォールバック値の間に??を配置します:
<?php
$username = null;
$displayName = $username ?? "Guest";
echo $displayName; // Guest
?>PHP は $username が null かどうかをチェックします。それが null であるため、オペレーターは代わりに "Guest" を返します。$username に値があれば、その値が使用されます。
<?php
$username = "Alice";
$displayName = $username ?? "Guest";
echo $displayName; // Alice
?>null合体演算子は、変数が全く定義されていない場合でも、エラーを引き起こすことなく動作します:
<?php
// $color is not defined anywhere
$selectedColor = $color ?? "blue";
echo $selectedColor; // blue
?>これにより ?? は isset() チェックを使用した三項演算子よりもクリーンになります。データが欠けている場合に適切なデフォルト値を提供するのに最適です。
チャレンジ
簡単入力から2つの値を読んでください:文字列 nickname と文字列 theme。
null 合体演算子を使用して、潜在的に欠落している値を扱います:
$userNicknameという変数を作成し、nullに設定します。次に null 合体演算子を使用して、$userNicknameが存在し null でない場合に$displayNicknameにその値を割り当て、そうでなければnicknameの入力値を使用します。$userThemeという変数を作成し、themeの入力値を割り当てます。null 合体演算子を使用して、$userThemeが存在し null でない場合に$selectedThemeにその値を割り当て、そうでなければデフォルトとしてdarkを使用します。- 未定義の変数
$language(定義しない)を直接 null 合体演算子で使用して、$displayLanguageに$languageの値を割り当て(存在する場合)、そうでなければデフォルトとしてEnglishを使用します。
各結果を新しい行にこの順序で出力: $displayNickname、$selectedTheme、$displayLanguage。
例:
入力が Player1 と light の場合、出力は次のようになります:
Player1
light
English入力が GuestUser と blue の場合、出力は次のようになります:
GuestUser
blue
Englishチートシート
null 合体演算子 (??) は、変数が null であるか存在しない場合にデフォルト値を提供します。
構文:
$result = $variable ?? "default value";$variable が null の場合、デフォルト値が使用されます:
$username = null;
$displayName = $username ?? "Guest";
echo $displayName; // Guest$variable に値がある場合、その値が使用されます:
$username = "Alice";
$displayName = $username ?? "Guest";
echo $displayName; // Aliceこの演算子は、未定義の変数に対してもエラーを発生させずに動作します:
// $color is not defined
$selectedColor = $color ?? "blue";
echo $selectedColor; // blue自分で試してみよう
<?php
// 入力を読み取る
$nickname = trim(fgets(STDIN));
$theme = trim(fgets(STDIN));
// TODO: 以下のコードを記述してください
// 1. $userNickname を null に設定し、?? を使用して $displayNickname に割り当てる
// 2. テーマ入力を使用して $userTheme を作成し、?? を使用して $selectedTheme に割り当てる (default: 'dark')
// 3. 未定義の $language で ?? を使用して $displayLanguage に割り当てる (default: 'English')
// 結果を出力(それぞれ新しい行に)
echo $displayNickname . "\n";
echo $selectedTheme . "\n";
echo $displayLanguage . "\n";
?>このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
4Comparison & Logical Operators
Comparison OperatorsEquality & IdentityLogical Operators Part 1Logical Operators Part 2Recap - Simple Logic2Variables and Data Types
NumbersStrings and QuotesBooleansNaming ConventionsRecap - Variable InitEmpty VariablesString ConcatenationGetting User InputCast to Different Types5Conditional Logic
If StatementIf - ElseThe Ternary OperatorNull Coalescing OperatorSwitch StatementRecap - Making Decisions3Basic Operators
Arithmetic OperatorsModulo OperatorExponentiation OperatorCombined AssignmentIncrement/DecrementOperator PrecedenceRecap - Simple CalculationsString Operators