> 백엔드 개발 > PHP 튜토리얼 > PHP에서 isset()과 empty()의 차이점에 대한 자세한 설명

PHP에서 isset()과 empty()의 차이점에 대한 자세한 설명

伊谢尔伦
풀어 주다: 2023-03-02 17:14:01
원래의
1050명이 탐색했습니다.

PHP 언어를 배우면서 이것이 함수 기반의 HTML 스크립팅 언어라는 것을 알아야 합니다. 거대한 함수 라이브러리는 PHP 언어 함수의 구현을 지원합니다. 아래에서는 PHP 함수 isset() 및empty()의 관련 사용법을 소개합니다.

PHP의 isset() 함수는 일반적으로 변수가 설정되었는지 감지하는 데 사용됩니다.

형식: bool isset ( mix var [, Mixed var [, ...]] )

함수: 변수가 설정되어 있는지 감지

반환값:

변수가 없으면 FALSE를 반환합니다.
변수가 존재하고 값이 NULL이면 , 또한 FALSE
를 반환합니다. 변수가 존재하고 값이 NULL이 아닌 경우 TRUE
가 반환됩니다. 여러 변수를 동시에 검사할 경우 각 항목이 이전 요구 사항을 충족하는 경우에만 TRUE가 반환됩니다. 그렇지 않으면 결과는 FALSE입니다.
버전: PHP 3, PHP 4, PHP 5

추가 설명:

unset()을 사용하여 변수를 해제한 후에는 더 이상 변수가 해제되지 않습니다. isset().
PHP 함수 isset()은 변수에만 사용할 수 있습니다. 다른 매개변수를 전달하면 구문 분석 오류가 발생합니다.
상수가 설정되었는지 확인하려면 정의된() 함수를 사용하세요. 반환값:

변수가 존재하지 않으면 TRUE를 반환

변수가 존재하고 그 값이 "", 0, "0", NULL,, FALSE, array(), var $ var; 및 속성이 없는 개체는 TURE를 반환합니다

변수가 존재하고 값이 "", 0, "0", NULL, FALSE, array(), var $var 및 속성이 없는 개체인 경우 FALSE 반환

버전: PHP 3, PHP 4, PHP 5

추가 지침:

empty() =!(부울) var의 반환 값이므로 그렇지 않습니다. 변수가 경고 메시지를 정의하지 않습니다. 자세한 내용은 부울로 변환을 참조하세요.

empty()는 변수에만 사용할 수 있습니다. 다른 매개변수를 전달하면 Paser 오류가 발생하고 작업이 종료됩니다.
상수가 설정되었는지 확인하려면 정의된() 함수를 사용하세요.

예:empty()와 isset()의 단순 비교

참고: 함수가 아닌 언어 구조이므로 변수로 호출할 수 없습니다. 기능.

참고:empty()는 변수만 감지하며, 변수가 아닌 것을 감지하면 구문 분석 오류가 발생합니다. 즉, 다음 문은 작동하지 않습니다: 비어 있음(addslashes($name)).

다음은 우리가 테스트한 isset 및 빈 함수의 자세한 예제 코드입니다. 읽어보면 기본적으로 동일합니다.

<?php
$var = 0;
// 结果为 true,因为 $var 为空
if (empty($var)) {
echo &#39;$var is either 0 or not set at all&#39;;
}
// 结果为 false,因为 $var 已设置
if (!isset($var)) {
echo &#39;$var is not set at all&#39;;
}
?>
로그인 후 복사

PHP를 사용하여 페이지 프로그램을 작성할 때 자주 사용하는 것은 다음과 같습니다. 변수 처리 php 페이지 마지막에 있는 변수 값이 비어 있는지 확인하는 함수인데 처음에는 empty() 함수를 사용하다가 익숙해지더니 몇 가지 문제점을 발견하여 isset() 함수로 전환하고 문제는 더 이상 존재하지 않았습니다. 이름에서 알 수 있듯이 empty()는 변수가 "비어 있는지" 확인하고, isset()는 변수가 설정되었는지 확인합니다. 이것이 제가 처음에 약간 우회하게 만든 소위 "이름에서 알 수 있듯이"입니다. 변수 값이 0과 같을 때 empty()도 true(True)가 되므로 일부 사고가 발생할 수 있습니다. empty()와 isset()은 모두 변수 처리 함수이지만 둘 다 변수가 구성되었는지 여부를 결정하는 데 사용되지만 특정 차이점이 있습니다. 비어 있음은 변수가 비어 있는지 또는 0인지도 감지합니다. 변수 값이 0인 경우,empty()는 변수가 비어 있는 것으로 간주하며, 이는 설정되지 않은 것과 동일합니다.

예를 들어 $id 변수를 감지하려면 $id=0인 경우 비어 있음() 및 isset()을 사용하여 $id 변수가 구성되었는지 감지합니다. 둘 다 서로 다른 값을 반환합니다. - 비어 있습니다. ()는 이를 그렇지 않다고 간주합니다. 구성, isset()은 $id의 값을 얻을 수 있습니다:

<?php
error_reporting(E_ALL);
echo &#39;<B>未定义$var</b><Br>&#39;;
echo "isset测试:<Br>";
if ( isset ( $var ))
{
echo &#39;变量$var存在!<Br>&#39; ;
}
echo "empty测试:<Br>";
if ( empty ( $var )){
echo &#39;变量$var的值为空<Br>&#39;;
}
else
{
echo &#39;变量$var的值不为空<Br>&#39;;
}
echo "变量直接测试:<Br>";
if ( $var ){
echo &#39;变量$var存在!<Br>&#39;;
}
else {
echo &#39;变量$var不存在!<Br>&#39;;
}
echo &#39;----------------------------------<br>&#39;;
echo &#39;<B>$var = \&#39;\&#39;</b><Br>&#39;;
echo "isset测试:<Br>";
$var = &#39;&#39;;
if ( isset ( $var ))
{
echo &#39;变量$var存在!<Br>&#39; ;
}
echo "empty测试:<Br>";
if ( empty ( $var )){
echo &#39;变量$var的值为空<Br>&#39;;
}
else
{
echo &#39;变量$var的值不为空<Br>&#39;;
}
echo "变量直接测试:<Br>";
if ( $var ){
echo &#39;变量$var存在!<Br>&#39;;
}
else {
echo &#39;变量$var不存在!<Br>&#39;;
}
echo &#39;----------------------------------<br>&#39;;
echo &#39;<B>$var = 0</b><Br>&#39;;
echo &#39;isset测试:<Br>&#39;;
$var = 0 ;
if ( isset ( $var ))
{
echo &#39;变量$var存在!<Br>&#39; ;
}
echo "empty测试:<Br>";
if ( empty ( $var )){
echo &#39;变量$var的值为空<Br>&#39;;
}
else
{
echo &#39;变量$var的值不为空<Br>&#39;;
}
echo "变量直接测试:<Br>";
if ( $var ){
echo &#39;变量$var存在!<Br>&#39;;
}
else {
echo &#39;变量$var不存在!<Br>&#39;;
}
echo &#39;----------------------------------<br>&#39;;
echo &#39;<B>$var = null</b><Br>&#39;;
echo &#39;isset测试:<Br>&#39;;
$var = null ;
if ( isset ( $var ))
{
echo &#39;变量$var存在!<Br>&#39; ;
}
echo "empty测试:<Br>";
if ( empty ( $var )){
echo &#39;变量$var的值为空<Br>&#39;;
}
else
{
echo &#39;变量$var的值不为空<Br>&#39;;
}
echo "变量直接测试:<Br>";
if ( $var ){
echo &#39;变量$var存在!<Br>&#39;;
}
else {
echo &#39;变量$var不存在!<Br>&#39;;
}
echo &#39;----------------------------------<br>&#39;;
 
echo &#39;<B>$var ="php"</b><Br>&#39;;
echo &#39;isset测试:<Br>&#39;;
$var = "php";
if ( isset ( $var ))
{
echo &#39;变量$var存在!<Br>&#39; ;
}
 
echo "empty测试:<Br>";
if ( empty ( $var )){
echo &#39;变量$var的值为空<Br>&#39;;
}
else
{
echo &#39;变量$var的值不为空<Br>&#39;;
}
echo "变量直接测试:<Br>";
if ( $var ){
echo &#39;变量$var存在!<Br>&#39;;
}
else {
echo &#39;变量$var不存在!<Br>&#39;;
}
?>
로그인 후 복사

이는 변수 처리 기능을 사용할 때 변수가 다음과 같은 값을 가질 수 있음을 의미합니다. 0, 주의하세요. 이때는 isset으로 바꾸는 것이 현명합니다.

php 페이지의 URL tail 매개변수가 id=0(예: test.php?id=0)으로 표시되면 다음을 비교해 보세요.

$id=0;
empty($id)?print "It&#39;s empty .":print "It&#39;s $id .";
//结果:It&#39;s empty .
print "<br>";
!isset($id)?print "It&#39;s empty .":print "It&#39;s $id .";
//结果:It&#39;s 0 .
로그인 후 복사

예 위의 추론을 감지하려면 다음 코드를 별도로 실행하세요.

연결에 대해 이야기하자면 공통점은 empty()와 isset()이 둘 다 변수 처리 함수라는 것입니다. 기능은 변수가 구성되었는지 여부를 확인하는 것입니다. 이는 변수를 처리하는 과정에서 매우 유사하기 때문에 관계에 대한 이해가 부족합니다. 만약 빈()과 isset() 두 함수 자체만을 고려한다면, 사람들은 이를 다른 각도에서 더 혼란스러워하게 될 것입니다. empty()와 isset()의 처리 객체는 정의되지 않은 변수, 0, 빈 문자열에 지나지 않습니다.

if(empty($id)) $id=1; - 若 id=0 ,id 也会为1
if(!isset($id)) $id=1; - 若 id=0 ,id 不会为1
로그인 후 복사
변수가 0이면 공백()은 TRUE를 반환하고, isset()은 TRUE를 반환합니다.

변수가 빈 문자열이면 공백()은 TRUE를 반환하고, isset()은 변수가 정의되지 않은 경우, empty()는 TRUE를, isset()은 FLASE를 반환합니다.

if(empty($id)) $id=1;
print $id; // 得到 1
if(!isset($id)) $id=1;
print $id; //得到 0
로그인 후 복사
매뉴얼의empty()에 대한 설명은 다음과 같습니다.

설명 bool 비어 있음( 혼합 var )

var가 비어 있지 않거나 0이 아닌 값인 경우 empty()는 FALSE를 반환합니다. 즉, "", 0, "0", NULL, FALSE, array(), var $var; 및 속성이 없는 개체는 비어 있는 것으로 간주되며 var가 비어 있으면 TRUE가 반환됩니다.


매뉴얼의 isset() 설명은 다음과 같습니다.

isset()은 변수 설정 여부를 감지합니다.

설명 bool isset ( mix var [ , 혼합 var [, ...]] )

var가 존재하면 TRUE를 반환하고, 그렇지 않으면 FALSE를 반환합니다.

unset()을 사용하여 변수가 해제된 경우 더 이상 isset()이 아닙니다. isset()을 사용하여 NULL로 설정된 변수를 테스트하면 FALSE를 반환합니다. 또한 NULL 바이트("?")는 PHP의 NULL 상수와 동일하지 않습니다.
경고: isset()은 변수에만 사용할 수 있습니다. 다른 인수를 전달하면 구문 분석 오류가 발생하기 때문입니다. 상수가 설정되었는지 확인하려면 Defined() 함수를 사용하면 됩니다.

변수가 선언되었는지 확인하고 싶을 때는 isset 함수를 사용하면 됩니다.
변수에 데이터가 할당되어 있고 비어 있지 않은지 확인하고 싶을 때는empty 함수를 사용하면 됩니다.
변수가 존재하는지 확인하고 싶을 때, 비어 있지 않으면 isset 함수를 먼저 사용한 다음 비어 있는 함수를 사용하세요.



관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿