Skip to Content
Go Back
안형우

안녕하세요. 14년차 풀스택 웹개발자 안형우입니다. 이 블로그에서는 WordPress, PHP, CSS, 사용성, 리눅스 서버 등 풀스택 웹개발에서 마주하는 다양한 문제 상황과 해결책, 필요한 개념들을 다룹니다. 👉 소개


작업물

📌 워드프레스, 답답한 빌더와 플러그인 대신 시원하게 커스터마징하기(강의) 2023-01-15
📌 아무도 말하지 않는 PHP의 좋은 점 2018-10-13
📌 유지보수하기 쉬운 CSS 전략(슬라이드) 2016-12-20
📌 워드프레스 테마에서 템플릿 파일 매칭 순서 2013-05-12

PHP 7.0에서 새로 나온 NULL 병합 연산자 – ??

경우에 따라 3항 연산자보다 편하게 사용할 수 있는 ?? 연산자를 소개한다.

php7의 여러 기능중 정말 쏠쏠하게 써 먹는 기능이 ?? 연산자(operator)다. 아래처럼 활용한다.

$user = $_GET['user'] ?? '';
$name = $name ?? '';
$is_print = $config['is_print'] ?? false;

좀더 자세히

전에는 $_GET['user'] 같은 것을 받을 때 이게 세팅돼 있는지 검사부터 해야 했다. 아래처럼 말이다.

$user = '';
if (!empty($_GET['user']) {
    $user = $_GET['user'];   
}

$_GET['user']가 설정돼 있지 않은데 if ($_GET['user']) { 식으로 검사하면 변수가 설정돼 있지 않다는 메시지가 뜬다(PHP Notice: Undefined index: user in php shell code on line 3).

3항 연산자(Ternary Operator)로 축약해 사용하는 경우가 많은데, 역시 검사를 해야 했다. 아래처럼 쓰면 노티스가 뜬다.

$user = $_GET['user'] ?: '';

그래서 불편하게 아래처럼 써야 했다.

$user = (!empty($_GET['user'])) ? $_GET['user'] : '';

하지만 PHP 7.0부터는 아래처럼 쓰면 된다.

$user = $_GET['user'] ?? '';

노티스가 뜨지 않는다. ??가 null 병합 연산자다. 앞의 변수가 설정돼 있지 않으면 뒤의 것을 사용한다.

공식 설명은 Migrating from PHP 5.6.x to PHP 7.0.x의 Null coalescing operator 항목을 참고하자.

안녕하세요. 14년차 풀스택 웹개발자 안형우입니다. 이 블로그에서는 WordPress, PHP, CSS, 사용성, 리눅스 서버 등 풀스택 웹개발에서 마주하는 다양한 문제 상황과 해결책, 필요한 개념들을 다룹니다. 👉 소개


작업물

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다