2011-07-14 20 views
46

Duplicar posibles:
Regarding if statements in PHP

En scripts PHP - lo que lo hace una instrucción if como esta comprobación para?

<?php if($variable){ // code to be executed } ?> 

que he visto que se usa en los guiones de varias veces, y ahora tengo muchas ganas de saber lo que se "busca". No falta nada; es solo una variable simple dentro de una declaración if ... No pude encontrar ningún resultado sobre esto, en ninguna parte, así que obviamente me veré estúpido publicando esto.

+1

Si la variable es verdadera/existe código entre {} se ejecutará. – Eddie

Respuesta

51

La construcción if ($variable) prueba para ver si $variable evalúa a cualquier valor de "verdad". Puede ser un booleano TRUE, o un valor no vacío, no nulo o distinto de cero.Echar un vistazo a la lista de evaluaciones booleanas in the PHP docs.

De la documentación de PHP: sin embargo

var_dump((bool) "");  // bool(false) 
var_dump((bool) 1);   // bool(true) 
var_dump((bool) -2);  // bool(true) 
var_dump((bool) "foo");  // bool(true) 
var_dump((bool) 2.3e5);  // bool(true) 
var_dump((bool) array(12)); // bool(true) 
var_dump((bool) array()); // bool(false) 
var_dump((bool) "false"); // bool(true) 

Tenga en cuenta que if ($variable) no es apropiado utilizar al probar si una clave variable o array se ha inicializado. Si aún no existe la variable o la matriz, esto daría como resultado un E_NOTICE Undefined variable $variable.

+12

Además de proporcionar conocimiento, I +1 por la adición de la palabra "verdad" a mi vocabulario. – user

+0

¿Se considera esto una buena práctica cuando se buscan variables? –

+2

@BasilMusa No, no se debe usar para verificar si las variables se han inicializado. Causaría 'E_NOTICE undefined variable $ var' si la variable aún no se había inicializado. Debe usar 'isset ($ var)' para saber si se han inicializado y luego verificar su valor booleano. –

7

Si convierte $variable en booleano, y actúa de acuerdo con el resultado de esa conversión.

Consulte los documentos boolean para obtener más información.

Para convertir explícitamente un valor a booleano, use los moldes (bool) o (booleanos). Sin embargo, en la mayoría de los casos el lanzamiento es innecesario, ya que un valor se convertirá automáticamente si un operador, función o estructura de control requiere un argumento booleano.

0

Depende enteramente del tipo de valor del objeto con el que está comprobando. En PHP, cada tipo de objeto tiene un cierto valor que devolverá falso si se compara con. La explicación de estos se puede encontrar aquí: http://php.net/manual/en/language.types.boolean.php Algunos valores que se evalúan como falsas son

float: 0.0

int: 0

booleano: false

cadena: ''

array: [] (vacío)

objeto: el objeto tiene 0 propiedades/está vacío

NULL

Es un poco diferente de la mayoría de los otros idiomas, pero una vez que te acostumbras puede ser muy útil. Es por esto que se puede ver una gran cantidad de declaraciones tales como

$result = mysqli_multi_query($query) or die('Could not execute query'); 

Una función en PHP sólo tiene que devolver un tipo de valor que se evalúa como falsa para algo como esto funcione. El operador OR en PHP no evaluará su segundo argumento SI el primer argumento es verdadero (ya que independientemente del resultado del segundo argumento, la instrucción o aún pasará) y líneas como esta intentarán llamar a una consulta y asignar el resultado a $ resultado . Si la consulta falla y la función devuelve un valor falso, se elimina el hilo y se imprime "No se pudo ejecutar la consulta".

+0

-1 for * "Algunos valores que evalúan como falso son ... objeto: el objeto tiene 0 propiedades/está vacío" * - esto es falso. Además de 'SimpleXMLElement's vacíos (que son un caso especial bastante absurdo incorporado en el lenguaje), todos los demás objetos en PHP son verdaderos. Pruebe 'var_dump ((bool) (new stdclass));' y obtendrá 'bool (true)'. –

1

Cualquiera de estos se consideran ser falsa (de modo que //code to be executed would no ejecutar)

  • la propia FALSO boolean
  • el número entero 0 (cero)
  • el flotador 0,0 (cero)
  • la cadena vacía, y la cadena "0"
  • una matriz con cero elementos
  • un objeto con cero variables miembro (PHP 4 solamente)
  • el tipo especial NULL (incluyendo variables no definidas)
  • objetos SimpleXML creados a partir de las etiquetas vacías

Todos los demás valores deben ser verdad. Más información en el PHP Booleans manual.

3

Comprueba si $variable evalúa a true. Hay un par de valores normales que se evalúan como true, consulte PHP type comparison tables.

if () puede contener cualquier expresión que en última instancia se evalúa como true o false.

if (true)     // very direct 
if (true == true)   // true == true evaluates to true 
if (true || true && true) // boils down to true 

$foo = true; 
if ($foo)     // direct true 
if ($foo == true)   // you get the idea... 
4

La siguiente lista explica lo que se considera para evaluar a false en PHP:

  • la propia FALSO boolean
  • el número entero 0 (cero)
  • el flotador 0,0 (cero)
  • la cadena vacía, y la cadena "0"
  • una matriz con cero elementos
  • un objeto con variables cero miembro (PHP 4 solamente)
  • el tipo especial NULL (incluyendo variables no definidas)
  • objetos SimpleXML creados a partir de etiquetas vacías

Cada otro valor es considerado TRUE (incluyendo cualquier recurso)

fuente: http://www.php.net/manual/en/language.types.boolean.php#language.types.boolean.casting

En su pregunta, una variable se evalúa dentro de la instrucción if(). Si la variable no está configurada, se evaluará como falsa según la lista anterior.Si se establece, o tiene un valor, se evaluará como verdadero, por lo tanto, se ejecutará el código dentro de la rama if().

-1

si una función se ejecuta correctamente (verdadero) o existe una variable (verdadero) boolean la instrucción if continuará. De lo contrario, será ignorado

+0

-1; toda esta respuesta es una tontería. Es perfectamente posible que una función se ejecute con éxito y devuelva un valor falsey, o que exista una variable y falsey. –

1

Intente mirar este viejo extendido "php truth table" para obtener su cabeza alrededor de los diversos baches que esperan reventar sus neumáticos. Al comenzar, sea tan explícito como sea posible con cualquier operador de comparación que bifurque su código. Prueba y prueba contra cosas being identical en lugar de eso.

Cuestiones relacionadas