isset()와 !empty()를 모두 체크하는 이유
와의 차이점이 있습니까?isset
그리고.!empty
이 이중 부울 체크를 하면 이렇게 하는 것이 맞습니까, 아니면 장황하게 하는 것입니까?또, 같은 작업을 간단하게 실시할 수 있는 방법이 있습니까?
isset($vars[1]) AND !empty($vars[1])
이것은 완전히 중복됩니다. empty
의 줄임말이다!isset($foo) || !$foo
,그리고.!empty
와 유사하다isset($foo) && $foo
.예.empty
반대의 일을 하다isset
또한 가치의 진실성에 대한 추가 검사도 실시합니다.
다른 말로 하자면empty
와 같다!$foo
변수가 존재하지 않는 경우 경고를 발생시키지 않습니다.이것이 이 함수의 주요 포인트입니다. 변수가 설정될 염려 없이 부울 비교를 수행합니다.
매뉴얼에는 다음과 같이 기술되어 있습니다.
empty()
와는 정반대이다(boolean) var
단, 변수가 설정되어 있지 않을 때는 경고가 생성되지 않습니다.
간단하게 사용할 수 있습니다.!empty($vars[1])
여기서.
isset()
는 변수가 설정되어 있고 늘이 아닌지를 테스트합니다.
http://us.php.net/manual/en/function.isset.php
empty()
는 변수가 특정 값으로 설정되어 있는 경우 true를 반환할 수 있습니다.
http://us.php.net/manual/en/function.empty.php
이를 확인하려면 $the_var unassigned를 사용하여 다음 코드를 시도하고 0으로 설정하고 1로 설정합니다.
<?php
#$the_var = 0;
if (isset($the_var)) {
echo "set";
} else {
echo "not set";
}
echo "\n";
if (empty($the_var)) {
echo "empty";
} else {
echo "not empty";
}
?>
인정된 답변이 올바르지 않습니다.
isset()은 !empty()와 동등하지 않습니다.
이 경로를 따라 가면 다소 불쾌하고 디버깅하기 어려운 버그가 발생합니다.예를 들어, 이 코드를 실행해 보겠습니다.
<?php
$s = '';
print "isset: '" . isset($s) . "'. ";
print "!empty: '" . !empty($s) . "'";
?>
isset($vars[1]) AND !empty($vars[1])
와 동등하다!empty($vars[1])
.
간단한 코드를 준비해서 실증적으로 보여드렸습니다.
마지막 행이 정의되지 않은 변수입니다.
+-----------+---------+---------+----------+---------------------+
| Var value | empty() | isset() | !empty() | isset() && !empty() |
+-----------+---------+---------+----------+---------------------+
| '' | true | true | false | false |
| ' ' | false | true | true | true |
| false | true | true | false | false |
| true | false | true | true | true |
| array () | true | true | false | false |
| NULL | true | false | false | false |
| '0' | true | true | false | false |
| 0 | true | true | false | false |
| 0.0 | true | true | false | false |
| undefined | true | false | false | false |
+-----------+---------+---------+----------+---------------------+
그리고 코드
$var1 = "";
$var2 = " ";
$var3 = FALSE;
$var4 = TRUE;
$var5 = array();
$var6 = null;
$var7 = "0";
$var8 = 0;
$var9 = 0.0;
function compare($var)
{
print(var_export($var, true) . "|" .
var_export(empty($var), true) . "|" .
var_export(isset($var), true) . "|" .
var_export(!empty($var), true) . "|" .
var_export(isset($var) && !empty($var), true) . "\n");
}
for ($i = 1; $i <= 9; $i++) {
$var = 'var' . $i;
compare($$var);
}
@print(var_export($var10, true) . "|" .
var_export(empty($var10), true) . "|" .
var_export(isset($var10), true) . "|" .
var_export(!empty($var10), true) . "|" .
var_export(isset($var10) && !empty($var10), true) . "\n");
정의되지 않은 변수는 함수 자체에서 임시 변수를 생성하므로 함수 외부에서 평가해야 합니다.
$a = 0;
if (isset($a)) { //$a is set because it has some value ,eg:0
echo '$a has value';
}
if (!empty($a)) { //$a is empty because it has value 0
echo '$a is not empty';
} else {
echo '$a is empty';
}
Empty just check는 참조된 변수/어레이에 값이 있습니다.php doc(empty)를 체크하면 emtpy로 간주됨을 알 수 있습니다.
* "" (an empty string) * 0 (0 as an integer) * "0" (0 as a string) * NULL * FALSE * array() (an empty array) * var $var; (a variable declared, but without a value in a class)
php doc(isset)에서도 찾을 수 있는 null이 아닌 변수가 isset인지 확인합니다.
그건 필요 없다.
변수가 존재하지 않으면 경고가 생성되지 않습니다.즉, empty()는 기본적으로 !issetvarvar) || $var == false와 동등합니다.
- PHP 웹사이트에서 참조할 수 있습니다.
empty()
기능:
돌아온다FALSE
한다면var
에는 0이 아닌 빈 값이 있습니다.
그거 알아두면 다행이야.다시 말해, 모든 것이NULL
, 에, 에, 에.0
"에 "가 반환됩니다.TRUE
하는 empty()
★★★★★★ 。
- 에서는 어떤 하겠습니다.
isset()
수수: :
TRUE
var
FALSE
렇지지그
하지 않는 엄밀하게 「」, 「」를 만이 .NULL
values가 반환됩니다.FALSE
isset()
의 유형의 값을 . 「」의 어느 쪽이든 상관없습니다.0
문자열TRUE
.
"비어 있음": 변수에서만 작동합니다.공백은 변수 유형에 따라 다른 의미를 가질 수 있습니다(매뉴얼: http://php.net/manual/en/function.empty.php) 참조).
"isset": 변수가 존재하는지 확인하고 참 NULL 또는 거짓 값을 확인합니다."unset"을 호출하여 설정을 해제할 수 있습니다.다시 한 번 매뉴얼을 확인합니다.
어느쪽인가를 사용할지는, 사용하고 있는 변수 타입에 따라서 다릅니다.
우선 변수가 존재하는지, NULL 또는 빈 변수가 아닌지 확인하는 것이 더 안전하다고 생각합니다.
같은 페이지를 사용하여 아래와 같이 제출 버튼을 통해 추가/편집하는 경우
<input type="hidden" value="<?echo $_GET['edit_id'];?>" name="edit_id">
그러면 우리는 그것을 사용하지 말아야 한다.
isset($_POST['edit_id'])
'코즈'edit_id
인지 edit 때문에, 에 「」를 해 주세요.대신 아래 체크 조건을 사용해야 합니다.
!empty($_POST['edit_id'])
언급URL : https://stackoverflow.com/questions/4559925/why-check-both-isset-and-empty
'source' 카테고리의 다른 글
오류 "root composer.json에 php ^7.3이 필요하지만 사용 중인 php 버전(8.0.0)이 해당 요구 사항을 충족하지 못합니다." (0) | 2022.12.24 |
---|---|
Spring Security에서 'X-Frame-Options' 응답 헤더를 비활성화하려면 어떻게 해야 합니까? (0) | 2022.12.24 |
Mac에 설치된 모든 Java 버전 보기 (0) | 2022.12.24 |
모든 mysql 테이블을 자동으로 별도의 파일로 덤프하시겠습니까? (0) | 2022.12.24 |
'ngModel'은 'input'의 알려진 속성이 아니므로 바인딩할 수 없습니다. (0) | 2022.12.24 |