source

isset()와 !empty()를 모두 체크하는 이유

manysource 2022. 12. 24. 17:44

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

?>

https://3v4l.org/J4nBb

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

  • PHP 웹사이트에서 참조할 수 있습니다.empty()기능:

돌아온다FALSE한다면var에는 0이 아닌 빈 값이 있습니다.

그거 알아두면 다행이야.다시 말해, 모든 것이NULL , 에, 에, 에.0 "에 "가 반환됩니다.TRUE하는 empty()★★★★★★ 。

  • 에서는 어떤 하겠습니다.isset()수수: :

TRUEvarFALSE렇지지그

하지 않는 엄밀하게 「」, 「」를 만이 .NULLvalues가 반환됩니다.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