isset()
함수와 empty()
함수
PHP의 isset()
함수와 empty()
함수는 둘 다 변수의 상태를 확인하는 함수입니다.
isset()
함수는 변수가 선언되어 있고,null
이 아닌 경우에만true
를 반환하는 반면,empty()
함수는 변수가 선언되어 있고, 값이null
인 경우에도true
를 반환합니다.
이러한 isset()
함수와 empty()
함수의 개념 정리 및 사용법과 차이점에 대해 알아봅니다.
isset()
함수와 empty()
함수의 차이점 비교
지금까지 설명한 내용을 토대로 PHP의 isset()
함수와 empty()
함수의 차이점을 반환 값 기준으로 정리한 표로 비교해 보겠습니다.
반환 값 | isset() |
empty() |
---|---|---|
변수가 존재하지 않을 경우 | false |
true |
변수의 값이 있는 경우 | true |
false |
변수의 값이 없는 경우(null ) |
false |
true |
변수의 값이 빈 문자열일 경우 | true |
true |
변수의 값이 빈 배열일 경우 | true |
true |
변수의 값이 빈 객체일 경우 | true |
false |
isset()
함수
isset()
함수는
변수의 존재하고 값이 존재하는지를 확인하는 함수입니다.
isset()
함수는
변수가 존재하고 그 값이 null
이 아닌 어떤 값(비어 있더라도)이든 가지고 있다면 true
를 반환하고,
그렇지 않으면 false
를 반환합니다.
주의하세요!
isset()
함수는 변수의 값이 false
, 빈 문자열, 빈 배열, 빈 객체일 경우 true
를 반환합니다.
isset()
함수의 형식은 다음과 같습니다.
구문
isset(mixed $var[, mixed ...$vars]): bool
매개변수
$var |
필수. 확인할 변수 또는 배열 요소. |
---|---|
$vars |
옵션. 확인할 추가 변수 또는 배열 요소입니다.
확인할 변수가 여래 개일 경우 쉼표( , )로 구분해서 순서대로 나열하면 됩니다.
여러 개의 매개변수가 제공된 경우 isset() 함수는 모든 매개변수가 설정되어 있는 경우에만 true 를 반환합니다. 평가는 왼쪽에서 오른쪽으로 이루어지며, 설정되지 않은 변수가 발견되면 즉시 평가를 멈춥니다. |
반환 값
변수가 존재하고 null
이 아닌 어떤 값이든 가지고 있다면 true
를 반환하며, 그렇지 않은 경우에는 false
를 반환합니다.
예시 사용법
/* 변수가 존재하지 않을 경우: false */
if (isset($name)) {
echo '변수가 존재할 경우'; //
} else {
echo '변수가 존재하지 않을 경우'; // 출력: '변수가 존재하지 않을 경우'
}
/* 변수의 값이 있는 경우: true */
$name_1 = '홍길동';
if (isset($name_1)) {
echo "반갑습니다. $name_1 님"; // 출력: '반갑습니다. 홍길동 님'
} else {
echo '이름이 설정되어 있지 않습니다.';
}
/* 변수의 값이 없는 경우: false */
$name_2;
if (isset($name_2)) {
echo "반갑습니다. $name_2 님";
} else {
echo '이름이 설정되어 있지 않습니다.'; // 출력: '이름이 설정되어 있지 않습니다.'
}
/* 변수의 값이 없는 경우: false */
$name_3 = null; // php에서 null 값은 변수에 값이 없음을 표현하는 특별한 값임
if (isset($name_3)) {
echo "반갑습니다. $name_3 님";
} else {
echo '이름이 설정되어 있지 않습니다.'; // 출력: '이름이 설정되어 있지 않습니다.'
}
/* 변수의 값이 빈 문자열일 경우: true */
$name_4 = '';
if (isset($name_4)) {
echo '반갑습니다. 회원 님'; // 출력: '반갑습니다. 회원 님'
} else {
echo '이름이 설정되어 있지 않습니다.';
}
/* 변수의 값이 빈 배열일 경우: true */
$name_5 = array();
if (isset($name_5)) {
echo '반갑습니다. 회원 님'; // 출력: '반갑습니다. 회원 님'
} else {
echo '이름이 설정되어 있지 않습니다.';
}
/* 변수의 값이 빈 객체일 경우: true */
class EmptyClass {}
$emptyObj = new EmptyClass();
if (isset($emptyObj)) {
echo "빈 객체 'emptyObj'는 설정되어 있습니다."; // 출력: "빈 객체 'emptyObj'는 설정되어 있습니다."
} else {
echo "빈 객체 'emptyObj'는 설정되어 있지 않습니다.";
}
isset()
함수는 변수가 존재하고 null
이 아닌 어떤 값이든 가지고 있다면 true
를 반환하며, 그렇지 않은 경우에는 false
를 반환합니다.
isset()
함수로 배열의 키 확인하기
PHP에서 배열의 키가 있는지 확인하는 array_key_exists()
내장 함수가 있지만 , isset()
함수를 이용해서도 배열의 키가 있는지 확인 할 수 있습니다.
아래는 배열에서 특정 키가 존재하는지를 isset()
함수를 사용하여 확인하는 예시입니다.
$myArray = array(
'name' => 'John',
'age' => 30,
'city' => 'New York'
);
if (isset($myArray['name'])) {
echo "배열 키 'name'은 설정되어 있습니다.". '<br>';
} else {
echo "배열 키 'name'은 설정되어 있지 않습니다.". '<br>';
}
if (isset($myArray['gender'])) {
echo "배열 키 'gender'는 설정되어 있습니다.";
} else {
echo "배열 키 'gender'는 설정되어 있지 않습니다.";
}
위의 예시에서 $myArray
는 연관 배열을 나타내며, isset()
함수를 사용하여 배열 키 'name'
과 'gender'
의 존재 여부를 확인하고 있습니다. 'name'
은 배열에 존재하므로 첫 번째 조건이 true
로 평가되고, 'gender'
는 배열에 존재하지 않으므로 두 번째 조건이 false
로 평가됩니다.
따라서 결과는 다음과 같이 나타납니다.
배열 키 'gender'은 설정되어 있지 않습니다.
isset()
함수를 사용하여 배열 요소의 존재 여부를 확인함으로써 배열에 접근하고 처리할 수 있습니다. 연관 배열이 아닐 경우 배열의 인덱스로 접근할 수 있습니다.
empty()
함수
empty()
함수는
변수의 존재 여부와 값이 비어 있는지를 확인하는 함수입니다.
empty()
함수는
변수가 존재하지 않거나, 존재하더라도 그 값이 없거나 비어있으면 true
를 반환하고,
그렇지 않으면 false
를 반환합니다.
값이 없거나 비어있다는 의미는 다음과 같습니다.
- 값이 할당되지 않았을 경우 (
null
) - 빈 문자열일 경우 (
''
) - 숫자 0일 경우 (
0
또는0.0
) - 빈 배열일 경우 (
array()
) false
일 경우
주의하세요!
PHP에서 빈 값의 객체는 falsey로 취급하지 않습니다. 따라서, empty()
함수는 변수의 값이 빈 값의 객체일 경우 false
를 반환합니다.
알아두세요!
PHP에서 빈 값의 객체인지 알 수 있는 방법중 하나는 주어진 객체의 속성을 배열로 가져 오는 get_object_vars()
함수로 쉽게 알 수 있습니다.
empty()
함수의 형식은 다음과 같습니다.
구문
empty(mixed $var): bool
매개변수
$var |
필수. 확인할 변수 또는 배열 요소 |
---|
반환 값
변수가 존재하지 않거나 비어있는 값이거나 0과 같은 "falsey(거짓같은)" 값인 경우에 true
를 반환하며, 그렇지 않은 경우에는 false
를 반환합니다. 이는 불리언으로 변환할 때 false
로 간주되는 값들을 의미합니다.
따라서 empty() 함수의 반환 값은 다음과 같이 나타납니다.
- 변수가 존재하지 않거나 비어있는 값이거나 0과 같은 "falsey" 값인 경우:
true
- 그렇지 않은 경우 (값이 존재하고 비어있지 않거나 0이 아닌 경우):
false
예시 사용법
/* 변수가 존재하지 않을 경우: true */
if (empty($name)) {
echo '변수가 존재하지 않을 경우'; // 출력: '변수의 값이 있는 경우'
} else {
echo '변수가 존재할 경우';
}
/* 변수의 값이 있는 경우: false */
$name_1 = '홍길동';
if (empty($name_1)) {
echo '이름이 설정되어 있지 않습니다.';
} else {
echo '변수의 값이 있는 경우'; // 출력: '변수의 값이 있는 경우'
}
/* 변수의 값이 없는 경우: true */
$name_2;
if (empty($name_2)) {
echo '변수의 값이 없는 경우'; // 출력: '변수의 값이 없는 경우'
} else {
echo '반갑습니다. 회원 님';
}
/* 변수의 값이 없는 경우: true */
$name_3 = null; // php에서 null 값은 변수에 값이 없음을 표현하는 특별한 값임
if (empty($name_3)) {
echo '변수의 값이 없다는 값인 null인 경우'; // 출력: '변수의 값이 없다는 값인 null인 경우'
} else {
echo '반갑습니다. 회원 님';
}
/* 변수의 값이 빈 문자열일 경우: true */
$name_4 = '';
if (empty($name_4)) {
echo '변수의 값이 빈 문자열일 경우'; // 출력: '변수의 값이 빈 문자열일 경우'
} else {
echo '반갑습니다. 회원 님';
}
/* 변수의 값이 빈 배열일 경우: true */
$name_5 = array();
if (empty($name_5)) {
echo '변수의 값이 빈 배열일 경우'; // 출력: '변수의 값이 빈 배열일 경우'
} else {
echo '이름이 설정되어 있지 않습니다.';
}
/* 변수의 값이 빈 객체일 경우: false */
class EmptyClass {}
$emptyObj = new EmptyClass();
if (empty($emptyObj)) {
echo "빈 객체 'emptyObj'는 설정되어 있습니다.";
} else {
echo "빈 객체 'emptyObj'는 false입니다."; // 출력: "빈 객체 'emptyObj'는 false입니다."
}