Archiv verlassen und diese Seite im Standarddesign anzeigen : [PHP] Unterschied !isset und empty
Blade II
2007-06-22, 00:36:43
Hey ho
Wo liegt überhaupt der Unterschied zwischen
!isset <-> empty
isset <-> !empty ?
Im gründe genommen kommt es ja aufs gleiche hinaus... oder doch nicht? ;)
darph
2007-06-22, 08:49:25
$x;
$emtpy = empty($x); //true;
$set = isset($x); //false;
$x = 5;
$emtpy = empty($x); //false;
$set = isset($x); //true;
Eine Variable kann gesetzt sein, ohne daß ihr ein Wert zugewiesen wurde. Zusätzlich:
The following things are considered to be empty:
"" (an empty string)
0 (0 as an integer)
"0" (0 as a string)
NULL
FALSE
array() (an empty array)
Natürlich ist eine Variable, die nie gesetzt wurde, leer. Dann gilt das, was du geschrieben hast, ja.
Ripsta
2007-06-22, 12:23:10
eine variable, die es nie gab, kannst du nicht abfragen - isset()
eine variable, die es gab, aber den inhalt "" hat - ist leer - empty()
oder vertue ich mich gerade? ;X
darph
2007-06-22, 12:31:27
eine variable, die es nie gab, kannst du nicht abfragen - isset()
Doch kannst du. Spuckt scheinbar keine Warnung aus. Eine solche Variable ist wohl leer per Definition.
<?php
echo(empty($x) ? "empty" : "not empty");
echo("<br>");
echo(isset($x) ? "set" : "not set");
echo("<hr>");
$x = 0;
echo(empty($x) ? "empty" : "not empty");
echo("<br>");
echo(isset($x) ? "set" : "not set");
echo("<hr>");
$x = 1;
echo(empty($x) ? "empty" : "not empty");
echo("<br>");
echo(isset($x) ? "set" : "not set");
echo("<hr>");
?>
empty
not set
------
empty
set
------
not empty
set
echo(empty($x) ? "empty" : "not empty");
Was ist das für ein Trick mit dem Fragezeichen und Doppelpunkt? Bei True nimmt er den ersten String, - und bei False den Zweiten?
Hat jemand ein Link zu der Syntax/Funktion oder erklärt es kurz?
Sephiroth
2007-06-22, 15:18:49
Was ist das für ein Trick mit dem Fragezeichen und Doppelpunkt? Bei True nimmt er den ersten String, - und bei False den Zweiten?
Hat jemand ein Link zu der Syntax/Funktion oder erklärt es kurz?
Ja das ist die Kurzform für If-Then-Else.
wenn?dann:sonst
Weitere alternative Syntax für Kontroll-Strukturen
http://de.php.net/manual/de/control-structures.alternative-syntax.php
Danke für die Aufklärung! Wieder was dazugelernt.
PatkIllA
2007-06-22, 15:33:18
Doch kannst du. Spuckt scheinbar keine Warnung aus. Eine solche Variable ist wohl leer per Definition.
Mit der entsprechenden Einstellung kriegt man auch da Warnungen hin.
darph
2007-06-22, 18:29:36
Mit der entsprechenden Einstellung kriegt man auch da Warnungen hin.
Meinst du das?
<?php
echo(empty($x) ? "empty" : "not empty");
echo("<br>");
echo(isset($x) ? "set" : "not set");
echo("<hr>");
echo($x);?>
Notice: Undefined variable: x in [...]\leer.php on line 6
PatkIllA
2007-06-22, 19:30:17
ja sowas. Ist aber glaub ich in den wenigsten Fällen so streng eingestellt.
Hat es ja auch nur zur Notice gebracht.
darph
2007-06-22, 19:35:08
Hat es ja auch nur zur Notice gebracht.
Aber erst in Zeile 6. isset und empty können beide ohne eine Notice zu bringen, eine nicht-gesetzte Variable testen.
Man muß also nicht unbedingt erst die Variable auf Existenz testen, à la if (isset($x) && !empty($x)), wie es sonst nötig gewesen wäre.
PatkIllA
2007-06-22, 19:36:57
isset und empty können beide ohne eine Notice zu bringen, eine nicht-gesetzte Variable testen.
Das ist ja auch genau deren Aufgabe.
darph
2007-06-22, 19:45:11
Das ist ja auch genau deren Aufgabe.
Dann sind wir uns ja einig.
vBulletin®, Copyright ©2000-2024, Jelsoft Enterprises Ltd.