변수는 PHP를 사용하여 개발된 거의 모든 프로그램의 핵심 구성 요소입니다. 대부분의 경우 변수에는 초기 값이 있지만 일부 변수는 초기화되지 않아 PHP에서 "정의되지 않은 변수" 경고가 발생할 수 있습니다.
변수는 다양한 이유로 정의되지 않을 수 있습니다. 예를 들어 변수가 전혀 선언되지 않았거나, 오타가 있거나, 변수가 조건부로 정의된 경우입니다. 또한 변수 값이 NULL일 수 있는데, 이는 변수가 초기화되지 않았거나 함수가 일부 상태를 나타내기 위해 null 값을 반환했음을 나타낼 수 있습니다.
변수를 사용하기 전에 변수가 정의되어 있는지 또는 비어 있는지 확인하는 것이 중요합니다. PHP는 이러한 상황을 처리하기 위해 isset(), empty() 및 is_null() 세 가지 함수를 제공합니다.
먼저 이 세 가지 기능의 기본 용도를 이해해 보겠습니다.
isset(): 변수가 선언되었으며 NULL이 아닌지 확인합니다.
empty(): 변수가 존재하고 값이 false(0, 빈 문자열, NULL 등 포함)가 아닌지 확인합니다.
is_null(): 변수의 값이 NULL인지 확인합니다.
isset()은 변수가 정의되어 있고 NULL이 아닌 경우 true를 반환하고, 변수 값이 0이거나 빈 문자열이거나 false인 경우에도 true를 반환합니다. 그리고 empty()는 변수 값이 0, 빈 문자열 "", 문자열 "0", 빈 배열, NULL 또는 false를 포함하여 "거짓 값"인 경우 true를 반환합니다.
둘은 모두 언어 구조이고 변수 함수를 통해 호출할 수 없다는 점에서 유사합니다.
<?php $fruit = ''; if(isset($fruit)) { echo 'Do you like '.$fruit.'?'; } // Output: Do you like ? if(!empty($fruit)) { echo 'Do you like '.$fruit.'?'; } // No Output ?>
실제로, empty()는 논리 연산과 결합된 isset()을 사용하여 구현할 수 있지만 일반적으로 내장된 empty() 함수를 직접 사용하는 것이 더 간결합니다.
<?php function my_empty($x) { return !isset($x) || $x == false; } ?>
is_null()은 변수가 명시적으로 NULL로 설정되면 true를 반환하고, 그렇지 않으면 false를 반환합니다. 그리고 isset()은 변수가 정의되어 있고 NULL이 아닌 한 true를 반환합니다.
<?php $fruit = NULL; if(isset($fruit)) { echo 'Do you like '.$fruit.'?'; } // No Output if(is_null($fruit)) { echo 'There is no fruit.'; } // Output: There is no fruit. ?>
empty()는 변수 값이 빈 문자열, NULL, 정수 0 또는 빈 배열을 포함하여 "거짓 값"인 경우 true를 반환하는 반면, is_null()은 변수 값이 NULL인 경우에만 true를 반환합니다.
<?php $person = [ 'first_name' => '몬티', '성' => '', '나이' => '83', 'fav_movie' => NULL ]; if(empty($person['last_name'])) { if(is_null($person['last_name'])) { echo '성이 NULL로 설정되어 있습니다.'; } 또 다른 { echo '성은 아마도 빈 문자열일 것입니다.'; } } // 출력: 성은 아마도 빈 문자열일 것입니다. if(is_null($person['fav_movie'])) { $person['first_name']을 에코하세요.' 좋아하는 영화를 지정하지 않았습니다.'; } // 출력: Monty는 좋아하는 영화를 지정하지 않았습니다. ?>
더 깨끗하고 안전한 코드를 작성하기 위한 몇 가지 팁은 다음과 같습니다.
여러 변수를 isset()에 한 번에 전달하여 해당 변수가 모두 정의되어 있고 NULL이 아닌지 확인할 수 있습니다.
빈 문자열이나 false를 NULL로 잘못 해석하는 것을 방지하려면 ==를 사용하여 NULL을 확인하지 마세요.
이 기사에서는 PHP에서 isset(),empty() 및 is_null()의 사용법과 차이점을 자세히 분석합니다. 차이점을 이해하면 개발자가 변수 상태를 보다 정확하게 처리하고 코드 안정성과 가독성을 향상시키는 데 도움이 됩니다.