2009-12-07 20 views
7

No puedo resolver esto.PHP booleano VERDADERO/FALSO?

Si escribo:

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

Por qué no puedo utilizar de esta manera:

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

O tengo que utilizar:

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

O esto:

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

pequeña observación: código que lee así: 'si ... return true; else return false; 'should ** always ** debe reescribirse para' return ... === true; 'o, en un lenguaje seguro para tipos, simplemente para' return ...; '. El 'si' simplemente no tiene sentido aquí, ya que la condición que estamos probando ya corresponde con el valor de retorno. –

Respuesta

17

No entiendo totalmente su pregunta, pero puedo utilizar cualquiera de los ejemplos que nos ha facilitado, con las siguientes salvedades:

Si dice if (a == TRUE) (o, ya que la comparación a true es redundante, simplemente if (a)), debe comprender que PHP evaluará varias cosas como verdaderas: 1, 2, 987, "hola", etc .; Todos son valores "verdaderos". Esto rara vez es un problema, pero debes entenderlo. Sin embargo, si la función puede devolver más de true o false, puede estar interesado en utilizar ===. === se compara el tipo de las variables: "a" == true es true, pero "a" === true es falso.

+0

Buena respuesta. Realmente aclara algunos puntos. – skiabox

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

Recuerde que el valor -1 se considera TRUE, como cualquier otro que no sea cero (ya sea negativo o positivo) número. FALSO sería 0 OBV ...

5

Se podría hacer como esto

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

diría que debería hacerlo así ... – HorusKol

3

Puede utilizar if($result == TRUE) pero eso es una exageración como if($result) es suficiente.

6

Si usted no necesita usar la variable $ resultado resultado, además, me gustaría hacer la siguiente versión más corta:

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