PHP의 Null 병합 대 Elvis 연산자

Subodh Poudel 2023년1월30일
  1. PHP의 엘비스 연산자
  2. PHP의 Null 병합 연산자
PHP의 Null 병합 대 Elvis 연산자

이 기사에서는 데모를 통해 PHP에서 null 병합 연산자와 Elvis 연산자를 구별합니다.

PHP의 엘비스 연산자

먼저 엘비스 연산자에 대해 알아보겠습니다. PHP Elvis 연산자는 삼항 연산자의 약식 연산자입니다.

삼항 연산자의 변형된 형태라고 할 수도 있습니다. PHP Elvis 연산자를 이해하려면 삼항 연산자와 작동 방식을 알아야 합니다.

삼항 연산자는 간단한 비교를 수행하거나 간단한 명령문이 있는 조건을 확인하는 데 사용되는 조건 연산자입니다. if-else 문의 짧은 버전입니다.

조건부 연산을 수행하는 코드의 길이를 줄입니다. 작업 순서는 왼쪽에서 오른쪽입니다.

통사론:

condition? statement1 : statement2;

삼항 연산자에서 먼저 condition이 평가됩니다. 조건이 참이면 statement1이 실행되고, 조건이 거짓이면 statement2가 실행됩니다.

조건, 참이면 결과문, 거짓이면 3개의 피연산자를 취하므로 삼항 연산자라고 합니다.

예제 코드:

<?php
$marks = 80;
$result = $marks >= 40 ? 'Pass': 'Fail';
echo $result;
?>

위의 예는 $marks >= 40 조건이 true이므로 Pass를 표시합니다.

출력:

Pass

이제 Elvis 연산자를 살펴보겠습니다. 삼항 연산자와 약간 다릅니다. 두 번째 피연산자(conditionstatement2 사이)를 생략하고 더 짧게 만듭니다.

통사론:

condition?:statement;

여기에서 condition이 true로 평가되면 condition을 반환합니다. 그렇지 않으면 statement를 반환합니다.

위의 Elvis 구문의 삼항 표현은 아래와 같습니다.

conditon ? condition : statement;

참고: 0, false, NULL, "", [], "0" 등과 같은 값은 PHP에서 거짓 값으로 간주됩니다.

Elvis 연산자의 몇 가지 예를 살펴보겠습니다.

예제 코드:

<?php
$name = "John Doe";
$yourName = $name ?: 'No name';
echo $yourName."<br>";

$marks = "";
$yourMarks = $marks ?: 'No marks';
echo $yourMarks."<br>";

$address = null;
$yourAddress = $address ?: 'No Address';
echo $yourAddress."<br>";

$age = false;
$yourAge = $age ?: 'No age';
echo $yourAge."<br>";
?>

출력:

John Doe
No marks
No Address
No age

$name 변수는 true를 반환하므로 변수 값이 평가됩니다. 나머지 경우 변수 $marks, $address$agefalse를 반환하므로 오른쪽에 있는 피연산자가 평가됩니다.

따라서 우리는 Elvis 연산자의 출력이 조건의 true 또는 false 상태에 의존한다는 결론을 내릴 수 있습니다.

PHP의 Null 병합 연산자

null 병합 연산자는 주어진 변수가 null인지 여부를 확인하고 값 쌍에서 null이 아닌 값을 반환합니다. null 병합 연산자의 출력은 변수가 null인지 여부에 따라 다릅니다.

이해를 돕기 위해 아래 구문을 살펴보겠습니다.

statment1 ?? statement2;

여기서 statment1이 null로 평가되면 statment2가 반환됩니다. statment1이 null이 아닌 값이면 반환됩니다.

null 병합 연산자에서 statement의 값이 false, 0 또는 ''인지는 중요하지 않습니다. statement에 잘못된 값이 있더라도 해당 값이 반환됩니다.

이것이 Elvis 연산자와 null 병합 연산자의 주요 차이점입니다. null 병합 연산자의 몇 가지 예는 다음과 같습니다.

예제 코드:

<?php
$name = "John Doe";
$yourName = $name ?? 'No name';
echo $yourName."<br>";

$marks = "";
$yourMarks = $marks ?? 'No marks';
echo $yourMarks."<br>";

$age = false;
$yourAge = $age ?? 'No age';
echo $yourAge."<br>";

$address = null;
$yourAddress = $address ?? 'No Address';
echo $yourAddress."<br>";
?>

출력:

John Doe


No Address

여기에서 변수 $name은 true이고 평가되고 출력 섹션에 인쇄됩니다. 다음으로 변수 $marks는 빈 문자열입니다. 빈 문자열은 거짓 값입니다.

두 번째 피연산자는 null 값이 아니므로 평가되지 않습니다. 빈 문자열이 평가되기 때문에 출력 섹션에 공백이 있습니다.

$age 변수는 false 값을 보유하지만 null 값은 보유하지 않기 때문에 대소문자가 동일합니다. 마지막으로 $address 변수에는 null 값이 있습니다. 따라서 두 번째 피연산자 No Address가 평가됩니다.

위의 예와 설명에서 Elvis 연산자와 null 병합 연산자의 중요한 차이점은 Elvis 연산자가 값이 참인지 여부를 확인한다는 것입니다. 그래도 null 병합 연산자는 값이 null이 아닌지 확인합니다.

Subodh Poudel avatar Subodh Poudel avatar

Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.

LinkedIn

관련 문장 - PHP Operator