programing

어디에서 isset () 및! empty ()를 사용해야합니까?

nasanasas 2020. 9. 3. 19:32
반응형

어디에서 isset () 및! empty ()를 사용해야합니까?


isset()함수가 빈 문자열을으로 취급 TRUE하므로 isset()HTML 양식에서 텍스트 입력 및 텍스트 상자의 유효성을 검사하는 효과적인 방법이 아니라는 것을 읽었습니다 .

따라서 empty()사용자가 무언가를 입력했는지 확인하는 데 사용할 수 있습니다 .

  1. isset()함수가 빈 문자열을 다음과 같이 취급 한다는 것이 사실 TRUE입니까?

  2. 그렇다면 어떤 상황에서 사용해야 isset()합니까? 항상 !empty()무언가가 있는지 확인 하기 위해 사용해야합니까 ?

예를 들어 대신

if(isset($_GET['gender']))...

이것을 사용하여

if(!empty($_GET['gender']))...

isset vs.! empty

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변수와 표현식을 모두 지원합니다.

따라서 첫 번째 질문은 빈 문자열을 포함하는 변수에 대해 trueisset반환 하는지 여부 입니다. 그리고 대답은 :

$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:

  1. 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
  1. 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

반응형