왜 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()
변수가 설정되어 있고 null이 아닌지 테스트합니다.
http://us.php.net/manual/en/function.isset.php
empty()
변수가 특정 값으로 설정되면 true를 반환 할 수 있습니다.
http://us.php.net/manual/en/function.empty.php
이를 설명하려면 $ the_var를 할당하지 않고 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) . "'";
?>
$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';
}
비어있는 확인은 참조 된 변수 / 배열이 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)
isset 동안 변수가 설정되어 있고 PHP doc (isset) 에서도 찾을 수있는 null이 아닌지 확인하십시오.
필요하지 않습니다.
변수가 존재하지 않으면 경고가 생성되지 않습니다. 이는 empty ()가 본질적으로! isset ($ var) || $ var == 거짓.
"빈": 변수에서만 작동합니다. 비어 있으면 다양한 변수 유형에 따라 다른 의미를 가질 수 있습니다 (설명서 확인 : http://php.net/manual/en/function.empty.php ).
"isset": 변수가 존재하는지 확인하고 true NULL 또는 false 값을 확인합니다. "unset"을 호출하여 설정을 해제 할 수 있습니다. 다시 한 번 매뉴얼을 확인하십시오.
둘 중 하나를 사용하는 것은 사용중인 변수 유형에 따라 다릅니다.
변수가 있는지 먼저 확인하고 실제로 NULL 또는 비어 있지 않은지 확인하기 때문에 둘 다 확인하는 것이 안전합니다.
동일한 페이지를 사용하여 아래와 같이 제출 버튼을 통해 추가 / 편집하면
<input type="hidden" value="<?echo $_GET['edit_id'];?>" name="edit_id">
우리는 사용해서는 안됩니다
isset($_POST['edit_id'])
bcoz edit_id
는 페이지 추가 또는 편집 여부에 관계없이 항상 설정됩니다. 대신 아래 조건을 확인해야합니다.
!empty($_POST['edit_id'])
- PHP 웹 사이트에서 다음
empty()
함수를 참조하십시오 .
비어 있지 않고 0이 아닌 값이 FALSE
있으면 반환 var
합니다.
알아두면 좋은 것입니다. 즉, 기능을 사용할 때 NULL
, 0
에서 "" 까지 모든 것이 반환 TRUE
됩니다 empty()
.
- 다음은
isset()
함수가 반환 하는 내용에 대한 설명입니다 .
존재하는 TRUE
경우 반환 var
합니다. FALSE
그렇지 않으면.
즉, 존재하지 않는 변수 (또는 NULL
값 이 엄격히 FALSE
지정된 변수 ) 만 isset()
함수에서 반환 됩니다 . 0
빈 텍스트 문자열 등 여부에 관계없이 모든 유형의 값을 가진 모든 변수 는를 반환 TRUE
합니다.
참고 URL : https://stackoverflow.com/questions/4559925/why-check-both-isset-and-empty
'IT story' 카테고리의 다른 글
예외가 발생하지 않을 때 try / catch 블록으로 인해 성능이 저하됩니까? (0) | 2020.04.04 |
---|---|
ASP.NET MVC에서 favicon.ico 제공 (0) | 2020.04.04 |
언제 RxJava Observable을 사용해야하고 언제 Android에서 간단한 콜백을 사용해야합니까? (0) | 2020.04.04 |
awk 스크립트에서 쉘 변수를 어떻게 사용합니까? (0) | 2020.04.04 |
액션 크리에이터에서 Redux 상태에 액세스하고 있습니까? (0) | 2020.04.04 |