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

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

伊谢尔伦
伊谢尔伦Original
2016-12-01 11:02:11973Durchsuche

Durch das Erlernen der PHP-Sprache sollten Sie wissen, dass es sich um eine funktionsbasierte HTML-Skriptsprache handelt. Eine riesige Funktionsbibliothek unterstützt die Implementierung von PHP-Sprachfunktionen. Im Folgenden stellen wir Ihnen die entsprechende Verwendung der PHP-Funktionen isset() und empty() vor.

Die isset()-Funktion von PHP wird im Allgemeinen verwendet, um zu erkennen, ob eine Variable gesetzt ist

Format: bool isset ( Mixed var [, Mixed var [, ...]] )

Funktion: Erkennen, ob die Variable gesetzt ist

Rückgabewert:

Wenn die Variable nicht existiert, wird FALSE zurückgegeben
Wenn die Variable existiert und ihr Wert NULL ist , es gibt auch FALSE zurück
Wenn die Variable vorhanden ist und der Wert nicht NULL ist, wird TRUE
zurückgegeben. Wenn mehrere Variablen gleichzeitig überprüft werden, wird TRUE nur zurückgegeben, wenn jedes einzelne Element die vorherige Anforderung erfüllt , andernfalls ist das Ergebnis FALSE
Version: PHP 3, PHP 4, PHP 5

Weitere Erklärung:

Nachdem wir eine Variable mit unset() freigegeben haben, ist dies nicht mehr der Fall isset().
Die PHP-Funktion isset() kann nur für Variablen verwendet werden. Die Übergabe anderer Parameter führt zu einem Parsing-Fehler.
Um zu überprüfen, ob eine Konstante gesetzt 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
Version: PHP 3, PHP 4, PHP 5

Weitere Anweisungen:

Der Rückgabewert von empty() = (boolean) var, aber das wird nicht so sein Die Variable ist nicht definiert. Definieren Sie eine Warnmeldung. 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 überprüfen, ob eine Konstante gesetzt 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 hier um eine Sprachstruktur und nicht um eine Funktion handelt, kann sie nicht über eine Variable aufgerufen werden Funktionen.

Hinweis: empty() erkennt nur Variablen und 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 Code für ein detailliertes Beispiel für isset- und leere Funktionen, die wir getestet haben. Nachdem ich dies gelesen habe, 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;;
}
?>

Beim Schreiben von Seitenprogrammen mit PHP habe ich oft Verwenden Sie die Variablenverarbeitung. Die Funktion bestimmt, ob ein Variablenwert am Ende der PHP-Seite leer ist. Zuerst war ich es gewohnt, die Funktion empty() zu verwenden, aber ich stellte einige Probleme fest, also wechselte ich zur Funktion isset() 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 prüfen, ob die Variable $id konfiguriert wurde. Beide geben unterschiedliche Werte zurück – leer () berücksichtigt dies nicht. Bei der Konfiguration kann isset() den Wert von $id erhalten:

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

Dies bedeutet, dass die Variable bei Verwendung der Variablenverarbeitungsfunktion einen Wert von haben kann 0, verwenden Sie empty(), um vorsichtig zu sein. Es ist zu diesem Zeitpunkt 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 einen Vergleich:

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

Ja Führen Sie den folgenden Code separat aus, um die obige Schlussfolgerung zu erkennen:

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

Um über ihre Verbindung zu sprechen, ist ihr gemeinsamer Punkt, dass empty() und isset() beide Variablenverarbeitungsfunktionen sind, deren Die Funktion besteht darin, festzustellen, ob die Variable konfiguriert wurde. Aufgrund ihrer großen Ähnlichkeit bei der Verarbeitung von Variablen verfügen sie jedoch nicht über ein unzureichendes 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 undefiniert ist, gibt empty() TRUE zurück, isset() gibt FLASE zurück

Die Erklärung von empty() im Handbuch lautet wie folgt:

Beschreibung bool leer (gemischte Variable)
Wenn var ein nicht leerer Wert 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 [ , gemischt var [, ...]] )

Gibt TRUE zurück, wenn var existiert, andernfalls FALSE.

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 Argumente 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 Funktion isset verwenden.
Wenn Sie feststellen möchten, ob einer Variablen Daten zugewiesen wurden und sie nicht leer ist, können Sie die Funktion empty verwenden
Wenn Sie feststellen möchten, ob eine Variable existiert und wenn sie nicht leer ist, verwenden Sie zuerst die Funktion isset und dann die Funktion empty



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
Vorheriger Artikel:PHP-Closure-ExperimentNächster Artikel:PHP-Closure-Experiment