Menu
Coddy logo textTech

Null Coalescing Operator

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

null合体演算子 (??) は、variablenull であるか存在しない場合に、default 値を使用する便利な方法を提供します。これは、欠落している可能性のあるデータを扱う際に特に便利です。

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

<?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 はどこにも定義されていません
$selectedColor = $color ?? "blue";
echo $selectedColor; // blue
?>

これにより、isset() チェックを伴う三項演算子を使用するよりも ?? の方がすっきりと書けるようになります。データが存在しない可能性がある場合に、適切なデフォルト値を提供するのに最適です。

challenge icon

チャレンジ

簡単

入力から2つの値(文字列の nickname と文字列の theme)を読み込みます。

Null合体演算子を使用して、欠落している可能性のある値を処理します:

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

各結果をこの順序($displayNickname$selectedTheme$displayLanguage)で改行区切りで出力します。

例:

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

Player1
light
English

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

GuestUser
blue
English

自分で試してみよう

<?php
// 入力を読み取る
$nickname = trim(fgets(STDIN));
$theme = trim(fgets(STDIN));

// TODO: 以下にコードを書いてください
// 1. $userNickname を null に設定して作成し、?? を使って $displayNickname に代入する
// 2. テーマ入力で $userTheme を作成し、?? を使って $selectedTheme に代入する(デフォルト: 指示の正確なテキスト)
// 3. 未定義の $language に ?? を使って $displayLanguage に代入する(デフォルト: 指示の正確なテキスト)

// 結果を出力する(それぞれ新しい行に)
echo $displayNickname . "\n";
echo $selectedTheme . "\n";
echo $displayLanguage . "\n";
?>
quiz icon腕試し

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

基礎のすべてのレッスン

自分で練習してみよう: PHPオンラインコンパイラ