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 연산자를 살펴보겠습니다. 삼항 연산자와 약간 다릅니다. 두 번째 피연산자(condition
과 statement2
사이)를 생략하고 더 짧게 만듭니다.
통사론:
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
및 $age
는 false
를 반환하므로 오른쪽에 있는 피연산자가 평가됩니다.
따라서 우리는 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 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