2010-03-17 7 views
10

Ich versuche, den Unterschied zwischen diesen zu verstehen:Warum brauche ich die Funktion isset() in PHP?

if (isset($_POST['Submit'])) { 
    //do something 
} 

und

if ($_POST['Submit']) { 
    //do something 
} 

Es scheint mir, dass, wenn die $ _POST [ ‚Senden‘] Variable wahr ist, dann wird es eingestellt. Warum sollte ich in diesem Fall die Funktion isset() brauchen?

Antwort

15

Da

$a = array("x" => "0"); 

if ($a["x"]) 
    echo "This branch is not executed"; 

if (isset($a["x"])) 
    echo "But this will"; 

(Siehe auch http://hk.php.net/manual/en/function.isset.php und http://hk.php.net/manual/en/language.types.boolean.php#language.types.boolean.casting)

+0

also sollte ich nur immer die isset-funktion in solchen fällen? – zeckdude

+2

Wenn Sie versuchen, auf $ a ["x"] 'zuzugreifen, wird auch eine 'E_Notice' ausgelöst, wenn in' $ a' kein Schlüssel 'x' definiert ist. Die Überprüfung mit 'isset' oder' array_key_exists' kann dies verhindern. – Gordon

+0

@Chris: Verwenden Sie immer 'isset', um das * Vorhandensein * einer bestimmten Variablen zu überprüfen. – kennytm

4

isset TRUE zurück, wenn es vorhanden ist, und ist ansonsten nicht NULL es falsch ist.

3

Sie möchten grundsätzlich überprüfen, ob die Variable $ _POST [] überhaupt übergeben wurde, unabhängig vom Wert. Wenn Sie isset() nicht verwenden, schlagen bestimmte Eingaben wie submit=0 fehl.

1

In Ihrem zweiten Beispiel wird PHP einen Hinweis (auf E_NOTICE oder strenger) ausgeben, wenn dieser Schlüssel nicht für $_POST gesetzt ist.

Siehe auch this question on Stack Overflow.

+0

Nicht 'E_STRICT'; 'E_NOTICE'. – janmoesen

+0

Ah Prost, danke. – alex

0

Der Code

 

if($_POST['Submit']) 
{ 
//some code 
} 
 

wird in WAMP nicht funktionieren (funktioniert auf xampp)
auf WAMP werden Sie

 

if (isset($_POST['Submit'])) { 
    //do something 
} 
 

versuchen, es zu verwenden. :)

+1

Das klingt mehr wie Standard Fehlerbehandlung Setup dann ein Betriebssystem. – alex

0

, wenn der Benutzer keinen Wert eingeben, so $ _POST [] NULL zurück, die wir in der Beschreibung der isset sagen:“

isset TRUE zurück, wenn es vorhanden ist, und ist ansonsten nicht NULL es falsch ist. , aber hier isset zurück die wahre "