어디에서 isset () 및! empty ()를 사용해야합니까?
isset()
함수가 빈 문자열을으로 취급 TRUE
하므로 isset()
HTML 양식에서 텍스트 입력 및 텍스트 상자의 유효성을 검사하는 효과적인 방법이 아니라는 것을 읽었습니다 .
따라서 empty()
사용자가 무언가를 입력했는지 확인하는 데 사용할 수 있습니다 .
isset()
함수가 빈 문자열을 다음과 같이 취급 한다는 것이 사실TRUE
입니까?그렇다면 어떤 상황에서 사용해야
isset()
합니까? 항상!empty()
무언가가 있는지 확인 하기 위해 사용해야합니까 ?
예를 들어 대신
if(isset($_GET['gender']))...
이것을 사용하여
if(!empty($_GET['gender']))...
FTA :
"isset ()은 변수에 (False, 0 또는 빈 문자열)을 포함하는 값이 있는지 확인하지만 NULL이 아닌지 확인합니다. var가 있으면 TRUE를 반환하고 그렇지 않으면 FALSE를 반환합니다.
반면에 empty () 함수는 변수에 빈 값이 빈 문자열, 0, NULL 또는 False인지 확인합니다. var에 비어 있지 않고 0이 아닌 값이 있으면 FALSE를 반환합니다. "
가장 일반적인 방법 :
isset
변수 (또는 배열의 요소 또는 객체의 속성) 가 존재 하는지 (그리고 null이 아닌지 ) 테스트empty
변수 (...)에 비어 있지 않은 데이터가 포함되어 있는지 테스트합니다.
질문 1에 답하려면 :
$str = '';
var_dump(isset($str));
준다
boolean true
변수 $str
가 존재하기 때문입니다.
그리고 질문 2 :
변수 가 존재 하는지 확인하려면 isset을 사용해야 합니다 . 예를 들어, 일부 데이터를 배열로 가져 오는 경우 해당 배열에 키가 설정되어 있는지 확인해야 할 수 있습니다. 예를 들어 / 에 대해
생각해보십시오 .$_GET
$_POST
이제 그 가치에 대해 작업하기 위해, 그러한 가치가 있음을 알 때 : 그것이 empty
.
둘 다 유효한 입력을 확인하는 좋은 방법이 아닙니다.
isset()
이미 언급했듯이 빈 문자열을 유효한 값으로 간주하기 때문에 충분하지 않습니다.! empty()
유효한 값일 수있는 '0'을 거부하기 때문에 충분하지 않습니다.
isset()
빈 문자열에 대한 동등성 검사와 결합 하여 사용 하는 것은 수신 매개 변수에 거짓 부정을 생성하지 않고 값이 있는지 확인하는 데 필요한 최소한의 것입니다.
if( isset($_GET['gender']) and ($_GET['gender'] != '') )
{
...
}
그러나 "최소한"이라는 말은 정확히 그것을 의미합니다. 위의 코드는 모두에 대한 값이 있는지 여부를 확인하는 것입니다 $_GET['gender']
. 의 값 이 유효한지 여부 (예 : 중 하나 ) 는 결정 하지 않습니다 .$_GET['gender']
("Male", "Female",
"FileNotFound"
)
이를 위해 Josh Davis의 답변을 참조하십시오 .
isset
값이 아닌 변수에만 사용하기위한 것이므로 isset("foobar")
오류가 발생합니다. PHP 5.5부터는 empty
변수와 표현식을 모두 지원합니다.
따라서 첫 번째 질문은 빈 문자열을 포함하는 변수에 대해 true 를 isset
반환 하는지 여부 입니다. 그리고 대답은 :
$var = "";
var_dump(isset($var));
PHP 매뉴얼 의 유형 비교 테이블 은 이러한 질문에 매우 유용합니다.
isset
기본적으로 검사 변수 이외의 값이있는 경우 는 null를 존재하지 않는 변수는 항상 값이 있기 때문에 널을 . empty
카운터 부분의 일종 isset
이지만 정수 값 0
과 문자열 값 "0"
도 비어있는 것으로 취급합니다 . (다시 한 번 유형 비교 테이블을 살펴보십시오 .)
$ _POST [ 'param']이 있고 문자열 유형이라고 가정하면
isset($_POST['param']) && $_POST['param'] != '' && $_POST['param'] != '0'
~와 동일하다
!empty($_POST['param'])
isset ()은 HTML 양식에서 텍스트 입력 및 텍스트 상자의 유효성을 검사하는 효과적인 방법이 아닙니다.
You can rewrite that as "isset() is not a way to validate input." To validate input, use PHP's filter extension. filter_has_var()
will tell you whether the variable exists while filter_input()
will actually filter and/or sanitize the input.
Note that you don't have to use filter_has_var()
prior to filter_input()
and if you ask for a variable that is not set, filter_input()
will simply return null
.
isset is used to determine if an instance of something exists that is, if a variable has been instantiated... it is not concerned with the value of the parameter...
Pascal MARTIN... +1 ...
empty() does not generate a warning if the variable does not exist... therefore, isset() is preferred when testing for the existence of a variable when you intend to modify it...
When and how to use:
- isset()
True for 0, 1, empty string, a string containing a value, true, false
False for null
e.g
$status = 0
if (isset($status)) // True
$status = null
if (isset($status)) // False
- Empty
False for 1, a string containing a value, true
True for null, empty string, 0, false e.g
$status = 0
if(empty($status)) // true
$status = 1
if(empty($status)) // False
Using empty
is enough:
if(!empty($variable)){
// Do stuff
}
Additionally, if you want an integer value it might also be worth checking that intval($variable) !== FALSE
.
isset($variable) === (@$variable !== null)
empty($variable) === (@$variable == false)
I use the following to avoid notices, this checks if the var it's declarated on GET or POST and with the @ prefix you can safely check if is not empty and avoid the notice if the var is not set:
if( isset($_GET['var']) && @$_GET['var']!='' ){
//Is not empty, do something
}
isset() is used to check if the variable is set with the value or not and Empty() is used to check if a given variable is empty or not.
isset() returns true when the variable is not null whereas Empty() returns true if the variable is an empty string.
$var = '';
// Evaluates to true because $var is empty
if ( empty($var) ) {
echo '$var is either 0, empty, or not set at all';
}
// Evaluates as true because $var is set
if ( isset($var) ) {
echo '$var is set even though it is empty';
}
Source: Php.net
isset() tests if a variable is set and not null:
http://us.php.net/manual/en/function.isset.php
empty() can return true when the variable is set to certain values:
http://us.php.net/manual/en/function.empty.php
<?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";
}
?>
참고URL : https://stackoverflow.com/questions/1219542/in-where-shall-i-use-isset-and-empty
'programing' 카테고리의 다른 글
Angular 2에서 TypeScript로 배열을 어떻게 필터링합니까? (0) | 2020.09.03 |
---|---|
C #에서 try / catch의 실제 오버 헤드는 무엇입니까? (0) | 2020.09.03 |
C ++에서 함수 이름에 별칭을 어떻게 할당합니까? (0) | 2020.09.03 |
Java의 null 반환 메서드를 Scala의 Option으로 래핑합니까? (0) | 2020.09.03 |
Android의 runOnUiThread 대 Looper.getMainLooper (). post (0) | 2020.09.03 |