PDA

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

Gast
2007-06-22, 14:40:57
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

Gast
2007-06-22, 15:29:32
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.