Menu
Coddy logo textTech

Null Coalescing Operator

CoddyのPHPジャーニー「基礎」セクションの一部 — レッスン 31/71。

null 合体演算子 (??) は、変数が null であるか存在しない場合にデフォルト値を使用するための便利な方法を提供します。これは、欠落している可能性のあるデータで作業する際に特に便利です。

この構文は、チェックする変数とフォールバック値の間に??を配置します:

<?php
$username = null;

$displayName = $username ?? "Guest";
echo $displayName; // Guest
?>

PHP は $usernamenull かどうかをチェックします。それが 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() チェックを使用した三項演算子よりもクリーンになります。データが欠けている場合に適切なデフォルト値を提供するのに最適です。

challenge icon

チャレンジ

簡単

入力から2つの値を読んでください:文字列 nickname と文字列 theme

null 合体演算子を使用して、潜在的に欠落している値を扱います:

  1. $userNickname という変数を作成し、null に設定します。次に null 合体演算子を使用して、$userNickname が存在し null でない場合に $displayNickname にその値を割り当て、そうでなければ nickname の入力値を使用します。
  2. $userTheme という変数を作成し、theme の入力値を割り当てます。null 合体演算子を使用して、$userTheme が存在し null でない場合に $selectedTheme にその値を割り当て、そうでなければデフォルトとして dark を使用します。
  3. 未定義の変数 $language(定義しない)を直接 null 合体演算子で使用して、$displayLanguage$language の値を割り当て(存在する場合)、そうでなければデフォルトとして English を使用します。

各結果を新しい行にこの順序で出力: $displayNickname$selectedTheme$displayLanguage

例:

入力が Player1light の場合、出力は次のようになります:

Player1
light
English

入力が GuestUserblue の場合、出力は次のようになります:

GuestUser
blue
English

チートシート

null 合体演算子 (??) は、変数が null であるか存在しない場合にデフォルト値を提供します。

構文:

$result = $variable ?? "default value";

$variablenull の場合、デフォルト値が使用されます:

$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";
?>
quiz icon腕試し

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

基礎のすべてのレッスン