PHP ?? null 병합 연산자(널 병합 연산자)

·2021년 6월 3일
0

php

목록 보기
2/3

null 병합 연산자(Null coalescing operator)

php 7 버전부터 추가된 새로 나온
?? 연산자(operator)
null 병합 연산자(Null coalescing operator) 라고 부른다.

3항연산자에서 특히 많이 쓰이는 것을 별도 연산자로 만든 느낌?
문법(syntax):
(expr1) ?? (expr2);

1) expr1이 null이면 expr2를 반환return
2) expr1이 null이 아니면(값이 있으면) expr1을 반환return
즉, expr1 이라는 값을 받았는데 값이 들어왔으면 그 값을 넣고,
값이 들어오지 않았으면(null이면) 내가 설정해놓은 기본값(default)을 넣을 때 쓴다.

<?php
// 예시Example:
$action = $_POST['action'] ?? 'default';

// 아래 코드와 같습니다.
if (isset($_POST['action'])) {
    $action = $_POST['action'];
} else {
    $action = 'default';
}

?>

null 병합 대입 연산자(Null Coalescing Assignment Operator)

php 7.4 에서 더 간편하게 쓸 수 있는 연산자 하나가 추가되었다.
$value 값이 null인지 확인해서 null이 아닌 경우엔 그대로 갖고 있고,
null일 경우에는 $value 그 자신의 값을 특정 default값으로 치환해주기 위해서는

<?php
// 아래와 같이 써야한다. ($value라는 같은 코드가 반복해서 나온다)
$value = $value ?? 'default';

//$value 정도로 짧지 않고 $this->request->data['value']처럼 길다면? 귀찮다.
// 그래서 null 병합연산자인 ??에 '='를 더 붙여서 ??= 라고 간편하게 쓸 수 있다.
$value ??= 'default';
?>

이 ??= 라는 연산자를 null 병합대입연산자라고 부른다.
문법(syntax):
(expr1) ??= (expr2);
expr1이 null일 경우 expr1에 expr2를 대입한다.(expr1의 값을 expr2로 바꾼다)
expr1이 null이 아닐 경우(값이 있을 경우) 그대로 둔다.

3항연산자(삼항연산자)(Ternary operator)

php 3항연산자(삼항연산자)(Ternary operator) 는?

문법(syntax):

(조건condition) ? (참true일 경우 반환return) : (거짓false일 경우 반환return);

<?php
$test = true;

$value = ($test===true) ? "1" : "0";
echo $value;
//결과: 1

//아래 코드와 결과가 같다.
if($test===true){
	$value = 1;
} else {
	$value = 0;
}
echo $value;
?>

참고
https://www.php.net/manual/en/language.operators.comparison.php#language.operators.comparison.coalesce
https://xly.kr/posts/87
https://pythonq.com/so/php/7033
https://habonyphp.com/2019/02/if.html
https://www.codementor.io/@sayantinideb/ternary-operator-in-php-how-to-use-the-php-ternary-operator-x0ubd3po6

profile
백엔드 개발자. 공동의 목표를 함께 이해한 상태에서 솔직하게 소통하며 일하는 게 가장 즐겁고 효율적이라고 믿는 사람.

0개의 댓글