2009-12-07 17 views
7

Non riesco a capirlo.PHP booleano VERO/FALSO?

Se digito:

function myfunction(){ 
    ...... 
    if ... 
     return TRUE; 
    if ... 
     return FALSE; 
} 

Perché non posso usare in questo modo:

$result = myfunction(); 
if ($result == TRUE) 
... 
if ($result == FALSE) 
... 

Oppure devo usare:

$result = myfunction(); 
if ($result == 1) 
... 
if ($result == 0) 
... 

O questo:

$result = myfunction(); 
if ($result) 
... 
if (!$result) 
... 
+0

Piccola osservazione: il codice che si legge come questo: 'se ... return true; altrimenti restituisce false; 'dovrebbe ** sempre ** essere riscritto in' return ... === true; 'o, in un linguaggio type-safe, semplicemente per' return ... ;'. Il 'se' semplicemente non ha senso qui, poiché la condizione che stiamo testando corrisponde già al valore di ritorno. –

risposta

17

Non capisco pienamente alla tua domanda, ma posso utilizzare uno degli esempi che hai fornito, con le seguenti avvertenze:

Se dite if (a == TRUE) (o, dal momento che il confronto con true è ridondante, semplicemente if (a)), è necessario comprendere che PHP valuterà diverse cose come vere: 1, 2, 987, "ciao", ecc .; Sono tutti valori "veri". Questo è raramente un problema, ma dovresti capirlo.

Tuttavia, se la funzione può restituire più di true o false, potrebbe essere interessato l'utilizzo di ===. === confronta il tipo di variabili: "a" == true è true, ma "a" === true è falso.

+0

Bella risposta. Elimina davvero alcuni punti. – skiabox

0
if($variable) 
//something when truw 
else 
//something else when false 

Ricordare che il valore -1 è considerato VERO, come qualsiasi altro numero diverso da zero (negativo o positivo). FALSE sarebbe 0 Dritto ...

5

Si potrebbe fare come questo

$result = myfunction(); 
if ($result === TRUE) 
... 
if ($result === FALSE) 
... 
+0

direi che dovresti farlo in questo modo ... – HorusKol

3

È possibile utilizzare if($result == TRUE) ma questo è un peso inutile come if($result) è sufficiente.

6

Se non avete bisogno di utilizzare il risultato $ variabile di risultato, inoltre, vorrei fare la seguente versione più breve:

if (myfunction()) { 
    // something when true 
} else { 
    // something else when false 
}