사이에 차이가 isset
하고 !empty
. 이 이중 부울 검사를 수행하면이 방법이 올바른지 또는 중복입니까? 같은 일을하는 더 짧은 방법이 있습니까?
isset($vars[1]) AND !empty($vars[1])
사이에 차이가 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])
여기서 간단히 사용할 수 있습니다 .
$vars[1]
통지를 받게됩니다.
empty
는 PHP에서 가장 오해 된 기능 중 하나입니다. "경고가 생성되지 않음"에 대한 작은 스 니펫은 간과하기 매우 쉽습니다. 여기에 게시하려면 문서를 몇 번 스캔해야했습니다.
empty($vars[1])
경고를 $vars[1]
설정하지 않아도 설정되지는 않습니다 echo $vars[1]
. 를 사용하여 사실을 확인했습니다 echo $vars[1]; if (!empty($vars[1])) echo 1; else echo 0;
.
0
됩니다 false
. PHP만이 유일한 것은 아닙니다. 여전히 불만이 무엇인지 확실하지 않습니다.
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) . "'";
?>
isset
이에 상응 하는 것은 아닙니다 !empty
.
$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이 아닌지 확인하십시오.
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");
함수 자체는 범위 자체에서 임시 변수를 생성하므로 정의되지 않은 변수는 함수 외부에서 평가해야합니다.
"빈": 변수에서만 작동합니다. 비어 있으면 변수 유형에 따라 다른 의미를 가질 수 있습니다 (수동 확인 : 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'])
empty()
함수를 참조하십시오 .비어 있지 않고 0이 아닌 값이 FALSE
있으면 반환 var
합니다.
알아두면 좋은 것입니다. 즉, 기능을 사용할 때 NULL
, 0
에서 "" 까지 모든 것이 반환 TRUE
됩니다 empty()
.
isset()
함수가 반환 하는 내용에 대한 설명입니다 .존재하는 TRUE
경우 반환 var
합니다. FALSE
그렇지 않으면.
즉, 존재하지 않는 변수 (또는 NULL
값 이 엄격히 FALSE
지정된 변수 ) 만 isset()
함수에서 반환 됩니다 . 0
빈 텍스트 문자열 등 여부에 관계없이 모든 유형의 값을 가진 모든 변수 는를 반환 TRUE
합니다.