LARAVEL

[PHP] isset() 과 empty() 의 차이

litzoo 2024. 10. 24. 10:41
선결론,

isset()이 값 존재 여부만 확인,
empty()는 값의 유효성 확인

 

$memo = isset($memo) ? explode("/",$memo)[1] : '';

라고 코드를 짰더니, $memo의 값이 빈칸("") 일때도 true로 값이 나왔다...

그러한 상황에서 (" ")[1] 배열행위를 하려니 에러가 났던 상황!

 

$memo = !empty($memo) ? explode("/",$memo)[1] : '';

로 하니까 정상적으로 잘 되었다

 

왜 이런 걸까?

 

출처 : pinterest.com

 


 

기존 코드에서 isset($memo)를 사용했을 때는

변수 $memo가 정의되어 있으면 true를 반환하지만, 값이 빈 문자열 ""일 때에도 true로 인식한다

그 결과, explode("/", $memo)[1]을 실행할 때

memo 값이 빈 문자열이면 오류가 발생하지 않고 첫 번째 인덱스 요소가 존재하지 않아서 에러가 남

 

하지만 !empty($memo)는 값이 "", null, false, 0, array() 등으로 비어 있으면 false를 반환하므로,

빈 문자열이 있을 때에도 해당 조건이 false가 되어 explode()를 실행하지 않고 바로 빈 문자열을 반환하게 되는 것!

 

이 차이는 isset()이 값이 존재하는지 여부만을 확인하는 반면, empty()는 값의 유효성을 체크하기 때문에 발생

 

하나 또 배웠다!

출처 : https://thumbs.dreamstime.com/

728x90
반응형