Gibt es einen Unterschied zwischen isset
und !empty
. Wenn ich diese doppelte boolesche Prüfung durchführe, ist sie auf diese Weise korrekt oder redundant? und gibt es einen kürzeren Weg, um dasselbe zu tun?
isset($vars[1]) AND !empty($vars[1])
Gibt es einen Unterschied zwischen isset
und !empty
. Wenn ich diese doppelte boolesche Prüfung durchführe, ist sie auf diese Weise korrekt oder redundant? und gibt es einen kürzeren Weg, um dasselbe zu tun?
isset($vars[1]) AND !empty($vars[1])
Antworten:
Dies ist völlig überflüssig. empty
ist mehr oder weniger Abkürzung für !isset($foo) || !$foo
und !empty
ist analog zu isset($foo) && $foo
. Dh empty
macht das Gegenteil von isset
plus eine zusätzliche Überprüfung auf die Wahrhaftigkeit eines Wertes.
Mit anderen Worten, empty
ist dasselbe wie !$foo
, gibt jedoch keine Warnungen aus, wenn die Variable nicht vorhanden ist. Das ist der Hauptpunkt dieser Funktion: Führen Sie einen booleschen Vergleich durch, ohne sich Gedanken über die gesetzte Variable zu machen.
Das Handbuch drückt es so aus:
empty()
ist das Gegenteil von(boolean) var
, außer dass keine Warnung generiert wird, wenn die Variable nicht gesetzt ist.
Sie können einfach !empty($vars[1])
hier verwenden.
$vars[1]
er benachrichtigt.
empty
ist eine der am meisten missverstandenen Funktionen in PHP. Der winzige Ausschnitt über "Es wird keine Warnung generiert" ist sehr leicht zu übersehen. Ich musste die Dokumentation einige Male selbst scannen, um sie zu finden und hier zu veröffentlichen.
empty($vars[1])
verursacht keine Warnungen auch $vars[1]
ist nicht gesetzt, wird aber echo $vars[1]
. Ich habe die Tatsache mit überprüft echo $vars[1]; if (!empty($vars[1])) echo 1; else echo 0;
.
0
als false
. PHP ist nicht der einzige. Ich bin mir immer noch nicht sicher, was Ihre Beschwerde ist.
isset()
testet, ob eine Variable gesetzt und nicht null ist:
http://us.php.net/manual/en/function.isset.php
empty()
kann true zurückgeben, wenn die Variable auf bestimmte Werte gesetzt ist:
http://us.php.net/manual/en/function.empty.php
Um dies zu demonstrieren, versuchen Sie den folgenden Code, wobei $ the_var nicht zugewiesen, auf 0 und auf 1 gesetzt ist.
<?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";
}
?>
Die akzeptierte Antwort ist nicht korrekt.
isset () entspricht NICHT ! empty ().
Sie werden einige ziemlich unangenehme und schwer zu debuggende Fehler erstellen, wenn Sie diesen Weg gehen. Versuchen Sie beispielsweise, diesen Code auszuführen:
<?php
$s = '';
print "isset: '" . isset($s) . "'. ";
print "!empty: '" . !empty($s) . "'";
?>
isset
gleichbedeutend ist mit !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';
}
Nur leer prüfen, ob die referenzierte Variable / das referenzierte Array einen Wert hat. Wenn Sie das PHP-Dokument (leer) überprüfen, werden Sie feststellen, dass diese Dinge als leer gelten
* "" (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)
während isset prüfe ob die Variable isset und nicht null ist, die auch im php doc (isset) zu finden ist
Es ist nicht erforderlich.
Es wird keine Warnung generiert, wenn die Variable nicht vorhanden ist. Das bedeutet, dass empty () im Wesentlichen das prägnante Äquivalent zu! Isset ($ var) || ist $ var == false.
isset($vars[1]) AND !empty($vars[1])
ist äquivalent zu !empty($vars[1])
.
Ich habe einfachen Code vorbereitet, um ihn empirisch darzustellen.
Die letzte Zeile ist eine undefinierte Variable.
+-----------+---------+---------+----------+---------------------+
| 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 |
+-----------+---------+---------+----------+---------------------+
Und Code
$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");
Undefinierte Variablen müssen außerhalb der Funktion ausgewertet werden, da die Funktion selbst eine temporäre Variable im Bereich selbst erstellt.
"Leer": Funktioniert nur mit Variablen. Leer kann für verschiedene Variablentypen unterschiedliche Bedeutungen haben (siehe Handbuch: http://php.net/manual/en/function.empty.php ).
"isset": Überprüft, ob die Variable vorhanden ist und ob ein wahrer NULL- oder ein falscher Wert vorliegt. Kann durch Aufrufen von "nicht gesetzt" deaktiviert werden. Überprüfen Sie noch einmal das Handbuch.
Die Verwendung eines der beiden Variablen hängt vom verwendeten Variablentyp ab.
Ich würde sagen, es ist sicherer, nach beiden zu suchen, da Sie zunächst prüfen, ob die Variable vorhanden ist und ob sie nicht wirklich NULL oder leer ist.
Wenn wir dieselbe Seite zum Hinzufügen / Bearbeiten über die Schaltfläche "Senden" wie unten verwenden
<input type="hidden" value="<?echo $_GET['edit_id'];?>" name="edit_id">
dann sollten wir nicht verwenden
isset($_POST['edit_id'])
bcoz edit_id
wird ständig festgelegt, ob es sich um eine Seite zum Hinzufügen oder Bearbeiten handelt. Stattdessen sollten wir die unten stehende Bedingung verwenden
!empty($_POST['edit_id'])
empty()
Funktion:Gibt zurück, FALSE
wenn der var
Wert nicht leer und nicht Null ist.
Das ist gut zu wissen. Mit anderen Worten, bei Verwendung der Funktion wird alles von NULL
bis 0
nach "" zurückgegeben .TRUE
empty()
isset()
Funktion zurückgibt:Gibt zurück, TRUE
falls var
vorhanden; FALSE
Andernfalls.
Mit anderen Worten, nur Variablen, die nicht existieren (oder Variablen mit strengen NULL
Werten), werden FALSE
für die isset()
Funktion zurückgegeben. Alle Variablen, die einen beliebigen Wert haben, sei es 0
eine leere Textzeichenfolge usw., werden zurückgegeben TRUE
.