PHP/포스팅

[PHP] null 병합 연산자 조건문

짜집퍼박사(짜박) 2024. 6. 2. 21:57

PHP의 null 병합 연산자(??)는 변수가 설정되지 않았거나 null일 때 기본값을 지정하는 간단하고 효율적인 방법을 제공합니다. 이는 PHP 7.0에서 도입되었으며, 기존의 삼항 연산자 또는 isset() 함수와 결합된 삼항 연산자를 대체할 수 있는 깔끔한 방법입니다.

 

기본 문법

null 병합 연산자는 두 개의 피연산자를 가집니다. 왼쪽 피연산자가 존재하고 null이 아니면 그 값을 반환하고, 그렇지 않으면 오른쪽 피연산자를 반환합니다.

$variable = $value1 ?? $value2;
$value1이 null이 아니면 $value1이 반환되고, 그렇지 않으면 $value2가 반환됩니다.

 

예제 1: 기본 사용법

다음 예제는 null 병합 연산자를 사용하여 변수에 기본값을 설정하는 방법을 보여줍니다.

$username = $_GET['user'] ?? 'guest';
echo $username;

여기서 $_GET['user']가 설정되어 있지 않거나 null인 경우, $username은 'guest'로 설정됩니다.

 

예제 2: 여러 연산자 연결

null 병합 연산자는 여러 값을 연결하여 사용할 수도 있습니다. 왼쪽부터 차례로 평가하여 null이 아닌 첫 번째 값을 반환합니다.

$username = $_GET['user'] ?? $_POST['user'] ?? 'guest';
echo $username;

이 예제에서는 $_GET['user']가 null이 아니면 그것을 사용하고, 그렇지 않으면 $_POST['user']를 사용합니다. 두 값이 모두 null인 경우 'guest'를 사용합니다.

 

예제 3: 기본값 설정

변수에 기본값을 설정하는 데 유용합니다.

$settings = [
    'theme' => 'dark',
    'layout' => 'default'
];

$userTheme = $userSettings['theme'] ?? $settings['theme'];
echo $userTheme;

이 예제에서 userSettings['theme']가 설정되어 있지 않거나 null인 경우, 기본값으로 settings['theme']을 사용합니다.

 

예제 4: 함수와 함께 사용

함수와 함께 null 병합 연산자를 사용하여 기본값을 설정할 수도 있습니다.

function getUsername() {
    // Some logic to get the username
    return null; // Simulate a null return
}

$username = getUsername() ?? 'default_user';
echo $username;

이 예제에서는 getUsername() 함수가 null을 반환하면, $username은 'default_user'로 설정됩니다.

 

주의 사항

- null 병합 연산자는 왼쪽 피연산자가 존재하고 null이 아니어야만 그 값을 반환합니다. isset()와 비슷하게 작동하지만, 변수가 설정되어 있지 않은 경우에도 작동합니다.
- null 병합 연산자는 ?? 연산자이며, ?와 :를 사용하는 삼항 연산자와는 다릅니다.

 

이 연산자는 PHP 7.0 이상에서만 사용할 수 있습니다. PHP 버전이 7.0 이상인지 확인하고 사용하는 것이 중요합니다.

 

예제 5: 삼항 연산자와 비교

기존의 삼항 연산자와 isset()를 사용한 코드와 비교해보면, null 병합 연산자가 얼마나 간결하고 읽기 쉬운지 알 수 있습니다.

 

기존의 삼항 연산자와 isset() 사용

$username = isset($_GET['user']) ? $_GET['user'] : 'guest';
echo $username;

null 병합 연산자 사용

$username = $_GET['user'] ?? 'guest';
echo $username;

null 병합 연산자를 사용하면 코드를 더 간결하고 읽기 쉽게 만들 수 있습니다. 이러한 간단한 문법은 변수에 기본값을 할당하거나 존재하지 않는 배열 요소를 다룰 때 매우 유용합니다.

 

With ChatGPT

'PHP > 포스팅' 카테고리의 다른 글

[PHP] while 반복문  (0) 2024.06.02
[PHP] for 반복문  (0) 2024.06.02
[PHP] 삼항 연산자 조건문  (0) 2024.06.02
[PHP] switch 조건문  (0) 2024.04.29
[PHP] if-elseif-else 조건문  (0) 2024.04.29