Code wird mehr erklären:
$var = 0;
if (!empty($var)){
echo "Its not empty";
} else {
echo "Its empty";
}
Das Ergebnis gibt "Es ist leer" zurück. Ich dachte, empty () prüft, ob ich die Variable bereits gesetzt habe und Wert darin habe. Warum gibt es "Es ist leer" zurück?
empty
ist vielleicht die nützlichste, aber weithin missverstandene PHP-Funktion. Erfahren Sie, wie und wann Sie es verwenden sollen.empty
ist im Wesentlichen die Abkürzung fürisset($var) && $var != false
. Sie müssen Ihreempty
sehr seltsame halten, um sich damit in den Fuß zu schießen. ; Pfalse
ohne einen "undefinierten Variablen" -Fehler auszulösen, ist nutzlos? Vermutlich tun Sie das nie ... 3) Die Auswahl der falschen Funktion in einem Sicherheitskontext bedeutet nicht, dass die Funktion selbst schlecht, nutzlos oder inkonsistent ist. es bedeutet nur, dass jemand die falsche Funktion für den Job gewählt hat.empty()
, hat sie wahrscheinlich den falschen Namen.Antworten:
http://php.net/empty
Beachten Sie, dass dies genau die gleiche Liste ist wie für einen Booleschen Zwang
false
.empty
ist einfach!isset($var) || !$var
. Versuchen Sie esisset
stattdessen.quelle
!empty($var)
, aber beachten Sie, dass dies nicht das gleiche ist, was Sie in der Frage geschrieben haben. Was zu verwenden ist, hängt ganz davon ab, welche Werte Sie als betrachten möchtentrue
. Vergleichen Sie einfach die Unterschiede zwischenisset
undempty
und wählen Sie die richtige Kombination für die richtige Situation.isset
Renditen ,True
wenn$var=0
. Aber was Sie damit meinen,if(isset($var) && $var != 0)
ist dasselbe wieempty
'0'
wird dies als äquivalent zu behandelt0
. Das ist eine zentrale Designphilosophie von PHP. Ich stimme zu, dass dies eine äußerst umstrittene Entscheidung ist , bin jedoch nicht hier, um diese Entscheidung mit Ihnen zu erörtern. Innerhalb der PHP-Logik ist IMOempty
als Äquivalent zu== false
Minus-Hinweisen in Ordnung. Dass einige Dinge in PHP ganz anders sein sollten als sie, ist ein anderes Thema.Ich habe mich gefragt , warum niemand die äußerst praktisch vorgeschlagen Typ Vergleichstabelle . Es beantwortet jede Frage zu den allgemeinen Funktionen und vergleicht Operatoren.
Ein Ausschnitt:
Neben anderen Cheatsheets habe ich immer eine Hardcopy dieses Tisches auf meinem Schreibtisch, falls ich mir nicht sicher bin
quelle
Bei numerischen Werten sollten Sie die Funktion is_numeric verwenden:
quelle
Verwenden Sie
strlen()
stattdessen. Ich bin auf dasselbe Problem gestoßen, indem ich 1/0 als mögliche Werte für einige Variablen verwendet habe. Ich verwendeif (strlen($_POST['myValue']) == 0)
, um zu testen, ob meine Variable ein Zeichen enthält oder nicht.quelle
@strlen
. Solange Sie eine Variable übergeben, sollte sie keinen Fehler ausgeben. Wenn Ihre Strlen leer ist, wird der Wert als 0Ich wurde vor kurzem auch mit meiner Hose erwischt. Das Problem, mit dem wir uns häufig befassen, sind nicht festgelegte Variablen - beispielsweise ein Formularelement, das möglicherweise vorhanden war oder nicht, aber für viele Elemente
0
(oder die Zeichenfolge,'0'
die genauer durch den Beitrag kommt, aber dennoch als "Falsey" bewertet wird). ) ist ein legitimer Wert, beispielsweise in einer Dropdown-Liste.Verwenden Sie
empty()
zuerst und dannstrlen()
ist Ihr Bestes, wenn Sie dies auch benötigen, als:quelle
Aus sprachlicher Sicht hat leer die Bedeutung wertlos . Wie die anderen sagten, müssen Sie verwenden,
isset()
um zu überprüfen, ob eine Variable definiert wurde, was Sie auch tun.quelle
0
Versus-null
Problem mit Leichtigkeit zu klären . Vielen Dank!empty()
gibt true für alles zurück, was ausgewertet wirdFALSE
, es ist tatsächlich ein 'not' (!
) in Verkleidung. Ich denke du meintestisset()
quelle
Um 0 als Wert in der Variablen zu akzeptieren, verwenden Sie
isset
Überprüfen Sie, ob die Variable leer ist
Überprüfen Sie, ob die Variable gesetzt ist
quelle
Es funktioniert für mich!
quelle
Die folgenden Dinge gelten als leer:
Aus dem PHP-Handbuch
In Ihrem Fall
$var
ist0
, soempty($var)
wird zurückkehrentrue
, werden negiert Sie das Ergebnis , bevor es zu testen, so läuft der else - Block „gebenIts empty
“ als Ausgabe.quelle
Aus dem Handbuch: Gibt FALSE zurück, wenn var einen nicht leeren Wert und einen Wert ungleich Null hat.
Die folgenden Dinge gelten als leer:
Mehr: http://php.net/manual/en/function.empty.php
quelle
In meinem Fall hat dieser Code funktioniert.
quelle
Tatsächlich wird nur geprüft, ob die Variable gesetzt ist oder nicht. Wenn Sie in diesem Fall prüfen möchten, ob Ihre Variable wirklich Null oder leer ist, können Sie dieses Beispiel verwenden:
Nur zur Kenntnisnahme $ myVar == 0 verhält sich wie eine leere Funktion.
quelle
leer sollte leer bedeuten .. was auch immer Täuschung sagt.
Wenn ich es tue
Ich gehe davon aus, dass dies
var_dump(empty($var));
falsch zurückkommt.Wenn Sie Dinge in einem Array überprüfen, müssen Sie immer
isset($var)
zuerst tun .quelle
Nur verwenden
($_POST['input_field_name'])!=0
statt!($_POST['input_field_name'])==0
dann wird 0 nicht als leer behandelt.quelle
Ich bin mir nicht sicher, ob es noch Leute gibt, die nach einer Erklärung und einer Lösung suchen. Die obigen Kommentare sagen alles über die Unterschiede zwischen TRUE / FALSE / 1/0 aus.
Ich möchte nur meine 2 Cent für die Anzeige des tatsächlichen Werts mitbringen.
BOOLEAN
Wenn Sie mit einem booleschen Datentyp arbeiten, suchen Sie nach einem TRUE vs. FALSE-Ergebnis. Wenn Sie es in MySQL speichern, wird es als 1 bzw. 1 gespeichert. 0 (wenn ich mich nicht irre, ist dies auch im Speicher Ihres Servers so).
Um den Wert in PHP anzuzeigen, müssen Sie überprüfen, ob er wahr (1) oder falsch (0) ist, und anzeigen, was Sie wollen: "TRUE" oder "FALSE" oder möglicherweise "1" oder "0".
Achtung, alles, was größer (oder anders) als 0 ist, wird in PHP auch als WAHR betrachtet. Beispiel: 2, "abc" usw. geben alle TRUE zurück.
BIT, TINYINT
Wenn Sie mit einem Datentyp für Zahlen arbeiten, ist die Art und Weise, wie er gespeichert wird, dieselbe.
Um den Wert anzuzeigen, müssen Sie PHP anweisen, ihn als Zahl zu behandeln. Der einfachste Weg, den ich gefunden habe, besteht darin, ihn mit 1 zu multiplizieren.
quelle
richtiges Beispiel. Erstellen Sie einfach ein Feld vom Typ int (Beispiel für eine Handynummer) in der Datenbank und senden Sie einen leeren Wert für die folgende Datenbank über ein Formular oder fügen Sie es einfach mit SQL ein. Was wird in Datenbank 0 gespeichert, da es vom Typ int ist und nicht als leer oder null gespeichert werden kann? Daher ist es leer, wird aber als 0 gespeichert. Wenn Sie also Daten über PHP abrufen und nach leeren Werten suchen. es ist sehr nützlich und logisch korrekt.
0.00, 0.000, 0.0000 .... 0.0 ... 0 ist ebenfalls leer und das obige Beispiel kann auch zum Speichern verschiedener Wertetypen in Datenbanken wie float, double, decimal verwendet werden (Dezimalstellen haben unterschiedliche Varianten wie 0.000 usw.).
quelle
Sie müssen isset () verwenden, um zu überprüfen, ob der Wert festgelegt ist.
quelle