IT story

왜 isset ()과! empty ()를 모두 확인

hot-time 2020. 4. 4. 11:01
반응형

왜 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) . "'";

?>

https://3v4l.org/J4nBb


$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 == 거짓.

php.net


"빈": 변수에서만 작동합니다. 비어 있으면 다양한 변수 유형에 따라 다른 의미를 가질 수 있습니다 (설명서 확인 : 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

반응형