Menu
Coddy logo textTech

Null Coalescing Operator

Coddy PHP 여정의 기초 섹션에 포함된 레슨 — 71개 중 31번째.

null 병합 연산자 (??)는 변수가 null이거나 존재하지 않을 때 기본값을 사용하는 편리한 방법을 제공합니다. 이는 누락될 수 있는 데이터와 작업할 때 특히 유용합니다.

이 구문은 확인할 변수와 대체 값 사이에 ??를 배치합니다:

<?php
$username = null;

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

PHP는 $usernamenull인지 확인합니다. 그렇기 때문에 연산자는 대신 "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

챌린지

쉬움

입력에서 두 값을 읽으세요: 문자열 nickname과 문자열 theme.

잠재적으로 누락된 값을 처리하기 위해 null 병합 연산자를 사용하세요:

  1. $userNickname 변수를 null로 설정하세요. 그런 다음 null 병합 연산자를 사용하여 $displayNickname$userNickname의 값(존재하고 null이 아닌 경우)을 할당하거나, 그렇지 않으면 nickname 입력 값을 사용하세요.
  2. $userTheme 변수를 생성하고 theme 입력 값을 할당하세요. null 병합 연산자를 사용하여 $selectedTheme$userTheme의 값(존재하고 null이 아닌 경우)을 할당하거나, 그렇지 않으면 기본값으로 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 할당 (기본값: 'dark')
// 3. 정의되지 않은 $language에 ??를 사용하여 $displayLanguage 할당 (기본값: 'English')

// 결과 출력 (각각 새 줄에)
echo $displayNickname . "\n";
echo $selectedTheme . "\n";
echo $displayLanguage . "\n";
?>
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

기초의 모든 레슨