본문 바로가기

PHP

null coalescing operator ?? double question in php 널 병합 연산자

회사 코드를 보다가 ?? 이 있는 걸 봤다.

 

?만 붙은 경우는 보통 함수 return 시 nullable 또는 삼항 연산자에서 값이 false냐 true냐에 따라 분기해서 값을 정할 때 사용한다.

 

php에서의 ??의 명칭은 null coalescing operator라고 한다.

사용법은 다음과 같다.

 

$_GET['user']의 값이 null이 아닌 경우는 그대로 $_GET['user']의 값을 쓰고 null인 경우에는 'nobody' 문자열을 $username에 할당한다.

isset() 헬퍼 메서드와 삼항 연산자를 써서 $_GET['user']에 값이 있는 지 판단하고 있으면 $_GET['user'], 없으면 'nobody'.

즉, 값이 set 되었는지에 따라 :를 기준으로 전자를 할당하느냐 후자를 할당하느냐를 판단하는 삼항 연산자를 축약해주는 게 ?? 이다.

 

재미난 예시가 있는데 ??도 chaining이 가능하다. $_GET['user']에 값이 할당되어 있으면 $_GET['user'], null이면 $_POST['user']. $_POST['user']에도 값이 할당되어 있지 않다면 'nobody'이다.

 

출처

https://stackoverflow.com/questions/53610622/what-does-double-question-mark-operator-mean-in-php

 

What does double question mark (??) operator mean in PHP

I was diving into Symfony framework (version 4) code and found this peace of code: $env = $_SERVER['APP_ENV'] ?? 'dev'; I'm not pretty sure what this actually does but I imagine that it expands to

stackoverflow.com

공식 문서

https://www.php.net/manual/en/migration71.new-features.php#migration71.new-features.nullable-types

 

PHP: New features - Manual

 1, "name" => 'Tom'],    ["id" => 2, "name" => 'Fred'],];// list() stylelist("id" => $id1, "name" => $name1) = $data[0];// [] style["id" => $id1, "name" => $name1] = $data[0];// list() styleforeach ($data as list("id" => $id, "name" => $name)) {    // logi

www.php.net

 

'PHP' 카테고리의 다른 글

PHP 기호 모음집  (0) 2020.02.21