Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erklärung des Unterschieds zwischen PHP isset() und empty()

Detaillierte Erklärung des Unterschieds zwischen PHP isset() und empty()

高洛峰
高洛峰Original
2017-01-21 13:51:15888Durchsuche

Die Funktion isset() von PHP wird im Allgemeinen verwendet, um zu erkennen, ob eine Variable gesetzt ist.
Format: bool isset (mixed var [, Mixed var [, ...]])

Funktion: Erkennen ob eine Variable gesetzt ist.

Rückgabewert:

Wenn die Variable nicht existiert, geben Sie FALSE zurück
Wenn die Variable existiert und ihr Wert NULL ist, wird auch FALSE zurückgegeben
Wenn die Variable vorhanden ist und ihr Wert nicht NULL ist, geben Sie TRUE zurück
Bei der gleichzeitigen Überprüfung mehrerer Variablen wird TRUE nur zurückgegeben, wenn jedes Element die vorherige Anforderung erfüllt, andernfalls ist das Ergebnis FALSE
Version: PHP 3, PHP 4, PHP 5
Weitere Anweisungen:
Nachdem eine Variable mit unset() freigegeben wurde, ist sie nicht mehr isset().
Die PHP-Funktion isset() kann nur für Variablen verwendet werden. Die Übergabe anderer Parameter führt zu einem Parsing-Fehler.
Um zu erkennen, ob eine Konstante festgelegt wurde, verwenden Sie die Funktion define().

Die Funktion empty() von PHP bestimmt, ob ein Wert leer ist

Format: bool leer (gemischte Variable)

Funktion: Überprüfen Sie, ob eine Variable leer ist

Rückgabewert:

Wenn die Variable nicht existiert, geben Sie TRUE zurück
Wenn die Variable existiert und ihr Wert „“, 0, „0“, NULL,, FALSE, array(), var $ ist var; und Objekte ohne Attribute, return TURE
Wenn die Variable existiert und der Wert nicht „“, 0, „0“, NULL, FALSE, array(), var $var; ist, dann Rückgabe FALSE
Versionen: PHP 3, PHP 4, PHP 5
Weitere Anweisungen:
Der Rückgabewert von empty() =! (boolean) var, es wird jedoch keine Warnmeldung generiert, da die Variable undefiniert ist . Weitere Informationen finden Sie unter Konvertieren in einen booleschen Wert.
empty() kann nur für Variablen verwendet werden. Die Übergabe anderer Parameter führt zu einem Paser-Fehler und beendet den Vorgang.
Um zu erkennen, ob eine Konstante festgelegt wurde, verwenden Sie die Funktion define().
Beispiel: Ein einfacher Vergleich von empty() und isset()

<?php 
$var = 0; 
// 结果为 true,因为 $var 为空 
if (empty($var)) { 
echo &#39;$var is either 0 or not set at all&#39;; 
} 
// 结果为 false,因为 $var 已设置 
if (!isset($var)) { 
echo &#39;$var is not set at all&#39;; 
} 
?>

Hinweis: Da es sich hierbei um eine Sprachstruktur und nicht um eine Funktion handelt, kann sie nicht von Variablenfunktionen aufgerufen werden.
Hinweis: empty() erkennt nur Variablen. Das Erkennen von allem, was keine Variable ist, führt zu einem Analysefehler. Mit anderen Worten, die folgende Anweisung funktioniert nicht: empty(addslashes($name)).
Das Folgende ist ein detaillierter Beispielcode für isset- und leere Funktionen, der von Script House getestet wurde. Nach dem Lesen ist es im Grunde dasselbe:

<?php 
error_reporting(E_ALL); 
echo &#39;<B>未定义$var</b><Br>&#39;; 
echo "isset测试:<Br>"; 
if ( isset ( $var )) 
{ 
echo &#39;变量$var存在!<Br>&#39; ; 
} 
echo "empty测试:<Br>"; 
if ( empty ( $var )){ 
echo &#39;变量$var的值为空<Br>&#39;; 
} 
else 
{ 
echo &#39;变量$var的值不为空<Br>&#39;; 
} 
echo "变量直接测试:<Br>"; 
if ( $var ){ 
echo &#39;变量$var存在!<Br>&#39;; 
} 
else { 
echo &#39;变量$var不存在!<Br>&#39;; 
} 
echo &#39;----------------------------------<br>&#39;; 
echo &#39;<B>$var = \&#39;\&#39;</b><Br>&#39;; 
echo "isset测试:<Br>"; 
$var = &#39;&#39;; 
if ( isset ( $var )) 
{ 
echo &#39;变量$var存在!<Br>&#39; ; 
} 
echo "empty测试:<Br>"; 
if ( empty ( $var )){ 
echo &#39;变量$var的值为空<Br>&#39;; 
} 
else 
{ 
echo &#39;变量$var的值不为空<Br>&#39;; 
} 
echo "变量直接测试:<Br>"; 
if ( $var ){ 
echo &#39;变量$var存在!<Br>&#39;; 
} 
else { 
echo &#39;变量$var不存在!<Br>&#39;; 
} 
echo &#39;----------------------------------<br>&#39;; 
echo &#39;<B>$var = 0</b><Br>&#39;; 
echo &#39;isset测试:<Br>&#39;; 
$var = 0 ; 
if ( isset ( $var )) 
{ 
echo &#39;变量$var存在!<Br>&#39; ; 
} 
echo "empty测试:<Br>"; 
if ( empty ( $var )){ 
echo &#39;变量$var的值为空<Br>&#39;; 
} 
else 
{ 
echo &#39;变量$var的值不为空<Br>&#39;; 
} 
echo "变量直接测试:<Br>"; 
if ( $var ){ 
echo &#39;变量$var存在!<Br>&#39;; 
} 
else { 
echo &#39;变量$var不存在!<Br>&#39;; 
} 
echo &#39;----------------------------------<br>&#39;; 
echo &#39;<B>$var = null</b><Br>&#39;; 
echo &#39;isset测试:<Br>&#39;; 
$var = null ; 
if ( isset ( $var )) 
{ 
echo &#39;变量$var存在!<Br>&#39; ; 
} 
echo "empty测试:<Br>"; 
if ( empty ( $var )){ 
echo &#39;变量$var的值为空<Br>&#39;; 
} 
else 
{ 
echo &#39;变量$var的值不为空<Br>&#39;; 
} 
echo "变量直接测试:<Br>"; 
if ( $var ){ 
echo &#39;变量$var存在!<Br>&#39;; 
} 
else { 
echo &#39;变量$var不存在!<Br>&#39;; 
} 
echo &#39;----------------------------------<br>&#39;; 

echo &#39;<B>$var ="php"</b><Br>&#39;; 
echo &#39;isset测试:<Br>&#39;; 
$var = "php"; 
if ( isset ( $var )) 
{ 
echo &#39;变量$var存在!<Br>&#39; ; 
} 

echo "empty测试:<Br>"; 
if ( empty ( $var )){ 
echo &#39;变量$var的值为空<Br>&#39;; 
} 
else 
{ 
echo &#39;变量$var的值不为空<Br>&#39;; 
} 
echo "变量直接测试:<Br>"; 
if ( $var ){ 
echo &#39;变量$var存在!<Br>&#39;; 
} 
else { 
echo &#39;变量$var不存在!<Br>&#39;; 
} 
?>

Bei Verwendung von PHP zum Schreiben von Seitenprogrammen. Ich verwende oft die Variablenverarbeitungsfunktion, um festzustellen, ob ein Variablenwert am Ende der PHP-Seite leer ist. Zuerst war ich es gewohnt, die Funktion empty() zu verwenden, aber ich habe einige Probleme festgestellt, also bin ich auf isset( umgestiegen. ) Funktion und das Problem bestand nicht mehr.
Wie der Name schon sagt, bestimmt empty(), ob eine Variable „leer“ ist, und isset() bestimmt, ob eine Variable gesetzt wurde. Es ist dieses sogenannte „Wie der Name schon sagt“, das mich zu Beginn dazu veranlasst hat, einige Umwege zu machen: Wenn ein Variablenwert gleich 0 ist, ist empty () auch wahr (True), sodass einige Unfälle auftreten. Es stellt sich heraus, dass empty () und isset () zwar Variablenverarbeitungsfunktionen sind, aber beide verwendet werden, um zu bestimmen, ob die Variable konfiguriert wurde. Sie weisen jedoch bestimmte Unterschiede auf: empty erkennt auch, ob die Variable leer oder Null ist. Wenn der Wert einer Variablen 0 ist, geht empty() davon aus, dass die Variable leer ist, was bedeutet, dass sie nicht gesetzt ist.
Um beispielsweise die Variable $id zu erkennen, verwenden Sie empty() und isset(), um zu erkennen, ob die Variable $id konfiguriert wurde. Beide geben unterschiedliche Werte zurück – empty() berücksichtigt Wenn es nicht konfiguriert ist, kann isset () den Wert von $id abrufen:

$id=0; 
empty($id)?print "It&#39;s empty .":print "It&#39;s $id ."; 
//结果:It&#39;s empty . 
print "<br>"; 
!isset($id)?print "It&#39;s empty .":print "It&#39;s $id ."; 
//结果:It&#39;s 0 .

Das bedeutet, dass wir bei der Verwendung der Variablenverarbeitungsfunktion vorsichtig sein müssen, wenn die Variable einen Wert von 0 haben kann, wenn wir leer verwenden () Verwenden Sie zu diesem Zeitpunkt isset. Es wäre klüger, es zu ersetzen.
Wenn der URL-Endparameter einer PHP-Seite id=0 erscheint (zum Beispiel: test.php?id=0), versuchen Sie einen Vergleich:

if(empty($id)) $id=1; - 若 id=0 ,id 也会为1 
if(!isset($id)) $id=1; - 若 id=0 ,id 不会为1

Sie können den folgenden Code separat ausführen Erkennen Sie die obige Schlussfolgerung:

if(empty($id)) $id=1; 
print $id; // 得到 1 
if(!isset($id)) $id=1; 
print $id; //得到 0

要说它们的联系,其共同点就是empty()和 isset()都是变量处理函数,作用是判断变量是否已经配置,正是由于它们在处理变量过程中有很大的相似性,才导致对它们的关系认识不足。单从 empty()和isset()这两个函数本身来考虑的话会把人弄得更糊涂,换一个角度来它。empty()和isset()的处理对象无外乎未定义变量,0,空字符串。 
如果变量为0,则empty()会返回TRUE,isset()会返回TRUE; 

如果变量为空字符串,则empty()会返回TRUE,isset()会返回TRUE; 
如果变量未定义,则empty()会返回TRUE,isset()会返回FLASE; 

手册中对empty()的解释如下: 

描述bool empty( mixed var ) 
如果 var 是非空或非零的值,则 empty() 返回 FALSE。换句话说,”"、0、”0″、NULL、FALSE、array()、var $var; 以及没有任何属性的对象都将被认为是空的,如果 var 为空,则返回 TRUE。 
手册中对isset()的解释如下: 

isset()检测变量是否设置 

描述bool isset ( mixed var [, mixed var [, ...]] ) 

如果 var 存在则返回 TRUE,否则返回 FALSE。 

如果已经使用 unset() 释放了一个变量之后,它将不再是 isset()。若使用 isset() 测试一个被设置成 NULL 的变量,将返回 FALSE。同时要注意的是一个 NULL 字节(”?”)并不等同于 PHP 的 NULL 常数。 
警告: isset() 只能用于变量,因为传递任何其它参数都将造成解析错误。若想检测常量是否已设置,可使用 defined()函数。 

当要 判断一个变量是否已经声明的时候 可以使用 isset 函数 
当要 判断一个变量是否已经赋予数据且不为空 可以用 empty 函数 
当要 判断 一个变量 存在且不为空 先isset 函数 再用 empty 函数

更多PHP isset()与empty()的使用区别详解相关文章请关注PHP中文网!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn