2010-03-17 10 views
10

Sto cercando di capire la differenza tra questo:Perché ho bisogno della funzione isset() in php?

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

e

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

Mi sembra che se il $ _POST [ 'submit'] variabile è vero, allora è impostata. Perché avrei bisogno della funzione isset() in questo caso?

risposta

15

Perché

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

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

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

(Vedere anche http://hk.php.net/manual/en/function.isset.php e http://hk.php.net/manual/en/language.types.boolean.php#language.types.boolean.casting)

+0

quindi dovrei semplicemente usare sempre la funzione isset in casi come questi? – zeckdude

+2

Cercando di accedere a '$ a [" x "]' genererà anche un 'E_Notice' quando non ci sono chiavi' x' definite in '$ a'. Il controllo con 'isset' o' array_key_exists' può evitarlo. – Gordon

+0

@Chris: usa sempre 'isset' per controllare * l'esistenza * di una determinata variabile. – kennytm

4

isset restituirà TRUE se esiste e non è NULL altrimenti è FALSO.

3

In sostanza, si desidera verificare se la variabile $ _POST [] è stata inviata, indipendentemente dal valore. Se non si utilizza isset(), alcuni invii come submit=0 avranno esito negativo.

1

Nel tuo secondo esempio, PHP invierà un avviso (su E_NOTICE o più severo) se tale chiave non è impostata per $_POST.

Vedere anche this question on Stack Overflow.

+0

Non 'E_STRICT'; 'E_NOTICE'. – janmoesen

+0

Ah grazie, grazie. – alex

0

Il codice

 

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

non funziona in WAMP (funziona su xampp)
su WAMP si dovrà utilizzare

 

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

provarlo. :)

+1

Sembra più simile all'impostazione predefinita di gestione degli errori, quindi a un sistema operativo. – alex

0

se l'utente non immettere un valore in modo $ _POST [] NULL che si dice nella descrizione del isset tornare:"

isset restituirà TRUE se esiste e non è NULL altrimenti è FALSO. , ma qui isset restituisce il vero "

Problemi correlati