if(!$value)
if($value == 'NULL')
if($value == '')
3가지 모두 같은 결과가 나오는건가요?
저는 첫번째를 즐겨 썼는데요.
오늘 코드를 추가하면서 문득 NULL 로 확인을 해보려고 코드를 넣으면서 이게 맞는건가 하는 생각이 들어서요.
3번째는 공백없는 빈값으로 이해했습니다.
if(!$value)
if($value == 'NULL')
if($value == '')
3가지 모두 같은 결과가 나오는건가요?
저는 첫번째를 즐겨 썼는데요.
오늘 코드를 추가하면서 문득 NULL 로 확인을 해보려고 코드를 넣으면서 이게 맞는건가 하는 생각이 들어서요.
3번째는 공백없는 빈값으로 이해했습니다.
빈값이라는 표현의 의미가 불분명하기 때문에 실제 상황에서 이것저것 테스트해보시는 방법밖에 없습니다. 아예 변수가 없을 수도 있고, 있는데 NULL일 수도 있고, FALSE일 수도 있고, 0일 수도 있고, 빈 문자열일 수도 있습니다. 책상 위에 아예 아무 것도 없는 것과, 빈 봉투가 하나 있는 것과, 봉투 안에 백지가 한 장 들어 있는 것은 다르듯이...
NULL로 체크하는 것과 'NULL'로 체크하는 것도 전혀 다릅니다. 질문에서 'NULL'이라고 하셨기 때문에 false가 나온다고 알려드린 것인데, 따옴표 없이 NULL이라고 하셨다면 상황이 달라집니다.
'NULL' 은 의도적으로 값이 없을때 db 에 자료 밀어넣은 때 NULL로 넣었을때나 써먹을 수 있고 없는 값에 리턴 값을 받으려면 NULL로 하던지 아니면 0자리 공백 '' 을 쓰던지 아니면 값이 없는 !$변수 를 써라 이정도로 이해가 됩니다.
이제 대충 다음에 이를 알고 테스트를 해보면 될 듯 합니다. 자세한 설명 감사합니다.
빈 필드가 NULL일 수도 있고 빈 문자열('')일 수도 있습니다. 직접 확인해봐야 합니다.
물론 !$value로 하면 대부분의 상황에서는 대충 다 맞기는 합니다. ㅎㅎ
진짜로 NULL값인 경우 1과 3은 참으로 나오고, 2는 거짓으로 나옵니다. NULL은 'NULL'이 아니니까요.
변수가 아예 존재하지 않는 경우에도 NULL값과 동일하게 취급합니다.
0이나 FALSE인 경우 1과 3이 참으로 나옵니다.
빈 문자열인 경우 1과 3이 참으로 나옵니다.
빈 배열인 경우 1만 참으로 나오고, 2와 3은 거짓으로 나옵니다.
이런 경우와 구분하여 NULL값인지만 딱 알고 싶다면 === 연산자를 사용하거나,
isset() 또는 is_null() 함수를 사용하여 명시적으로 비교하는 것이 좋습니다.