선결론,
isset()이 값 존재 여부만 확인,
empty()는 값의 유효성 확인
$memo = isset($memo) ? explode("/",$memo)[1] : '';
라고 코드를 짰더니, $memo의 값이 빈칸("") 일때도 true로 값이 나왔다...
그러한 상황에서 (" ")[1] 배열행위를 하려니 에러가 났던 상황!
$memo = !empty($memo) ? explode("/",$memo)[1] : '';
로 하니까 정상적으로 잘 되었다
왜 이런 걸까?
기존 코드에서 isset($memo)를 사용했을 때는
변수 $memo가 정의되어 있으면 true를 반환하지만, 값이 빈 문자열 ""일 때에도 true로 인식한다
그 결과, explode("/", $memo)[1]을 실행할 때
memo 값이 빈 문자열이면 오류가 발생하지 않고 첫 번째 인덱스 요소가 존재하지 않아서 에러가 남
하지만 !empty($memo)는 값이 "", null, false, 0, array() 등으로 비어 있으면 false를 반환하므로,
빈 문자열이 있을 때에도 해당 조건이 false가 되어 explode()를 실행하지 않고 바로 빈 문자열을 반환하게 되는 것!
이 차이는 isset()이 값이 존재하는지 여부만을 확인하는 반면, empty()는 값의 유효성을 체크하기 때문에 발생
하나 또 배웠다!
728x90
반응형
'LARAVEL' 카테고리의 다른 글
[PHP] NULL 널 병합 연산자(??, ||, !) (0) | 2024.11.14 |
---|---|
[LARAVEL] 세션값으로 기존에 가려고 했던 URL 이동하기 (1) | 2024.11.07 |
[블레이드] 데이터 출력시 HTML 태그 나올 때 해결법 (0) | 2024.09.21 |
[라라벨] 터미널에서 캐시 지우는 방법 (0) | 2024.09.15 |
[PHP] 파일 업로드 오류코드 종류와 의미 (0) | 2024.09.13 |