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

Detaillierte Erklärung des Unterschieds zwischen PHP isset und empty

WBOY
Freigeben: 2016-08-08 09:23:43
Original
1010 Leute haben es durchsucht

PHPs isset()-Funktion 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 set
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 existiert und ihr Wert nicht NULL ist , es wird TRUE zurückgegeben
Überprüfen Sie mehrere Variablen gleichzeitig. TRUE wird nur zurückgegeben, wenn jedes einzelne Element die vorherige Anforderung erfüllt, andernfalls ist das Ergebnis FALSE
Versionen: PHP 3, PHP 4, PHP 5
Weitere Anweisungen:
Nachdem Sie mit unset() die Variable freigegeben haben, 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().
PHPs empty()-Funktion bestimmt, ob der Wert leer ist
Format: bool leer (gemischte Variable)
Funktion: Prüfen, ob eine Variable leer ist
Rückgabewert:
Wenn die Variable nicht leer ist exist Gibt TRUE zurück
Wenn die Variable existiert und ihr Wert „“, 0, „0“, NULL, FALSE, array(), var $var; und ein Objekt ohne Attribute ist, dann wird TRUE zurückgegeben
Wenn die Variable existiert und der Wert ist nicht „“, 0, „0“, NULL,, FALSE, array(), var $var; und Objekte ohne Attribute, geben FALSE zurück
Version: PHP 3, PHP 4, PHP 5
Weitere Erklärung:
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 zwischen empty() und isset()

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

Hinweis: Da es sich hier um eine Sprachstruktur und nicht um eine Funktion handelt, kann sie nicht über eine Variable aufgerufen werden Funktionen.
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 getesteter Code für ein detailliertes Beispiel für Isset- und Empty-Funktionen. Nach dem Lesen ist es im Grunde dasselbe:

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

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

</span><span>echo</span> "empty测试:<Br>"<span>; 
</span><span>if</span> ( <span>empty</span> ( <span>$var</span><span> )){ 
</span><span>echo</span> '变量$var的值为空<Br>'<span>; 
} 
</span><span>else</span><span>
{ 
</span><span>echo</span> '变量$var的值不为空<Br>'<span>; 
} 
</span><span>echo</span> "变量直接测试:<Br>"<span>; 
</span><span>if</span> ( <span>$var</span><span> ){ 
</span><span>echo</span> '变量$var存在!<Br>'<span>; 
} 
</span><span>else</span><span> { 
</span><span>echo</span> '变量$var不存在!<Br>'<span>; 
} 
</span>?>
Nach dem Login kopieren

PHP verwenden Beim Programmieren verwende ich häufig die Variablenverarbeitungsfunktion, um festzustellen, ob ein Variablenwert am Ende der PHP-Seite leer ist. Am Anfang war ich es gewohnt, die Funktion empty() zu verwenden, habe aber einige Probleme festgestellt, also habe ich auf die Funktion isset() umgestellt. Das Problem besteht 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:

<span>$id</span>=0<span>; 
</span><span>empty</span>(<span>$id</span>)?<span>print</span> "It's empty .":<span>print</span> "It's <span>$id</span> ."<span>; 
</span><span>//</span><span>结果:It's empty . </span><span>print</span> "<br>"<span>; 
</span>!<span>isset</span>(<span>$id</span>)?<span>print</span> "It's empty .":<span>print</span> "It's <span>$id</span> ."<span>; 
</span><span>//</span><span>结果:It's 0 . </span>
Nach dem Login kopieren

Das bedeutet, dass die Variable bei Verwendung der Variablenverarbeitungsfunktion den Wert 0 haben kann Verwenden Sie empty(), um vorsichtig zu sein. Zu diesem Zeitpunkt ist es klüger, es durch isset zu ersetzen.
Wenn der URL-Endparameter einer PHP-Seite id=0 erscheint (zum Beispiel: test.php?id=0), versuchen Sie zu vergleichen:

<span>if</span>(<span>empty</span>(<span>$id</span>)) <span>$id</span>=1; - 若 id=0<span> ,id 也会为1 
</span><span>if</span>(!<span>isset</span>(<span>$id</span>)) <span>$id</span>=1; - 若 id=0 ,id 不会为1 
Nach dem Login kopieren

kann sein separat wie folgt ausführen Der Code erkennt die obige Schlussfolgerung:

<span>if</span>(<span>empty</span>(<span>$id</span>)) <span>$id</span>=1<span>; 
</span><span>print</span><span>$id</span>; <span>//</span><span> 得到 1 </span><span>if</span>(!<span>isset</span>(<span>$id</span>)) <span>$id</span>=1<span>; 
</span><span>print</span><span>$id</span>; <span>//</span><span>得到 0 </span>
Nach dem Login kopieren


Um über ihre Verbindung zu sprechen, ist ihr gemeinsamer Punkt, dass empty() und isset() beide Variablenverarbeitungsfunktionen sind. Ihre Funktion besteht darin, festzustellen, ob die Variable konfiguriert wurde Die Ähnlichkeit führt zu einem unzureichenden Verständnis ihrer Beziehung. Wenn Sie nur die beiden Funktionen empty() und isset() selbst betrachten, werden die Leute verwirrter. Betrachten Sie es aus einem anderen Blickwinkel. Die Verarbeitungsobjekte von empty() und isset() sind nichts anderes als undefinierte Variablen, 0 und leere Strings.
Wenn die Variable 0 ist, gibt empty() TRUE zurück, isset() gibt TRUE zurück.
Wenn die Variable eine leere Zeichenfolge ist, gibt empty() TRUE zurück, isset() gibt TRUE zurück >Wenn die Variable nicht definiert ist, gibt empty() TRUE und isset() FLASE zurück.
Die Erklärung von empty() im Handbuch lautet wie folgt:
Beschreibung bool empty(mixed var)
Wenn var nicht leer oder ein Wert ungleich Null ist, gibt empty() FALSE zurück. Mit anderen Worten: „“, 0, „0“, NULL, FALSE, array(), var $var; und Objekte ohne Eigenschaften werden als leer betrachtet und TRUE wird zurückgegeben, wenn var leer ist.
Die Erklärung von isset() im Handbuch lautet wie folgt:
isset() erkennt, ob die Variable gesetzt ist
Beschreibung bool isset (mixed var [, Mixed var [, ...]] )
Wenn var existiert, wird TRUE zurückgegeben, andernfalls wird FALSE zurückgegeben.
Wenn eine Variable mit unset() freigegeben wurde, ist sie nicht mehr isset(). Wenn Sie isset() verwenden, um eine Variable zu testen, die auf NULL gesetzt ist, wird FALSE zurückgegeben. Beachten Sie außerdem, dass ein NULL-Byte („?“) nicht der NULL-Konstante von PHP entspricht.
Warnung: isset() kann nur mit Variablen verwendet werden, da die Übergabe anderer Parameter zu einem Analysefehler führt. Wenn Sie überprüfen möchten, ob eine Konstante gesetzt wurde, können Sie die Funktion define() verwenden.

Wenn Sie feststellen möchten, ob eine Variable deklariert wurde, können Sie die isset-Funktion verwenden. Wenn Sie feststellen möchten, ob einer Variablen Daten zugewiesen wurden und sie nicht leer ist, können Sie dies tun Verwenden Sie die leere Funktion.
Wenn Sie feststellen möchten, ob einer Variablen Daten zugewiesen wurden und sie nicht leer ist, können Sie die leere Funktion verwenden. Wenn die Variable vorhanden ist und nicht leer ist, verwenden Sie zuerst die Funktion isset leere Funktion

Das Obige hat eine detaillierte Erklärung des Unterschieds zwischen PHP isset und empty einschließlich der relevanten Aspekte eingeführt. Ich hoffe, dass es für Freunde hilfreich sein wird, die sich für PHP-Tutorials interessieren.

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage