PHP 삼항연산자 , null 병합 연산자
- 이번 포스팅에서는 요즘 자주 사용하고 알고 있으면 되게 유용한 정보를 포스팅할 예정이다.
삼항연산자
삼항연산자는 쉽게 생각하면 조건부 연산자 즉 if문 과 같다고 보면된다.
ex)
$dog = '숑숑이';
if($dog == '숑숑이')
{
echo "귀엽다";
}
else
{
echo "아니다";
}
//출력 귀엽다
아주 간단한 if 조건문이지만 풀이를 하면 $dog의 변수에 숑숑이라는 문자열이 있고 조건이 맞으면 ‘귀엽다’ 틀리면 ‘아니다’ 라는 문자를 찍게 했다.
이걸 삼항연산자로 표현하면 더욱 간단하고 짧게 코드를 짤 수 있다.
$dog = '숑숑이';
echo $dog == '숑숑이' ? '귀엽다' : '아니다';
//출력 귀엽다
???코드가 확실히 짧아진걸 느낄 수 있다.
풀이를 하면 $dog 가 숑숑이면 ? ‘귀엽다’ 아니면 : ‘아니다’ 라고 쉽게 이해하면 된다!
null 병합 연산자
병합 연산자는 ?? 연산자 이고 php 7 버전부터 추가된 새로운 연산자 이다.
삼항 연산자를 조금 더 업그레이드 시켰다고 보면된다.
문법은 (expr1) ?? (expr2); 이다.
- expr1 값이 null 일 경우 expr2 를 반환
- expr1 이 null 이 아닐경우 expr1 를 반환
//post 로 값을 받는 다는 가정
$getPost = $_POST['test'] ?? '`no`'
echo $getPost ;
POST로 넘어온 값이 있다면 그 값이 노출될거고 값이 없다면 no 라는 문자열이 노출될거다.
참쉽다!
📌정리
지금은 되게 간단한 예제들로 적었기 때문에 굳이 삼항연산자를 사용하지 않고 그냥 조건문을 사용해도 되지 않을까? 하시는 분들이 분명 있을거다.
이전 방법
//예전
if(!empty($getPost['test'])){ // 비어있지 않다면.
echo $getPost['test'];
}
else{
echo "값이 없다"
}
// 예전에는 empty 함수를 사용해서 비어있는지 확인을 했어야 했다.
삼항 연산자
$test = $getPost['test'] ?: 'no';
echo $test;
라고 하면 될거같지만 ❗ 오류가 난다.
변수 선언이 안되어있는건데 즉 $getPost 배열에 test 키를 가진 값이 없단 뜻이다.
그래서 삼항 연산자를 사용하려면.
$test = !empty($getPost['test']) ? $getPost['test'] : 'no';
echo $test;
조금 복잡하지만 이렇게 사용하면 된다
null 병합 연산자
$test = $getPost['test'] ?? 'no';
echo $test;
php7 이후부터는 이렇게 사용하면 된다.
❗❗❗ null 병합 대입 연산자
php 7.4 에서 더 간편하게 사용할 수 있는 연산자 하나가 추가되었다.
$test ??= 'default';
echo $test
// default 출력
$test 가 null 이 아닌경우 해당 값을 변수에 저장하고 null 인경우 default를 저장한다.
$test = 'hi';
$test ??= 'default';
echo $test
// hi 노출
$test 가 hi 라는 값을 가지고 있기 때문에 hi 노출이다.
❗ 마치며
자주 사용하는 연산자라 간단하게 적어두려고 하다 욕심이 생겨 조금 길어졌던거 같다.
그래도 뿌듯하다~~
댓글