Booleanos

Este es el tipo más simple. Un boolean expresa un valor que indica verdad. Puede ser TRUE (verdadero) o FALSE (falso).

Sintaxis

Para especificar un literal de tipo boolean se emplean las constantes TRUE o FALSE. Ambas no son susceptibles a mayúsculas y minúsculas.

<?php
$foo 
True// asigna el valor TRUE a $foo
?>

Usualmente, el resultado de un operador que devuelve un valor de tipo boolean es pasado a una estructura de control.

<?php
// == es un operador que comprueba la
// igualdad y devuelve un booleano
if ($accion == "mostrar_version") {
    echo 
"La versión es 1.23";
}

// esto no es necesario...
if ($mostrar_separadores == TRUE) {
    echo 
"<hr>\n";
}

// ...porque se puede escribir simplemente:
if ($mostrar_separadores) {
    echo 
"<hr>\n";
}
?>

Conversión a booleano

Para convertir explícitamente un valor al tipo boolean, use los amoldamientos (bool) o (boolean). Sin embargo, en la mayoría de casos es innecesario el amoldamiento, ya que un valor será convertido automáticamente si un operador, función o estructura de control requiere un argumento de tipo boolean.

Véase también la Manipulación de tipos.

Cuando se realizan conversiones a boolean, los siguientes valores se consideran FALSE:

  • el boolean FALSE mismo
  • el integer 0 y -0 (cero)
  • el float 0.0 y -0.0 (cero)
  • el valor string vacío, y el string "0"
  • un array con cero elementos
  • el tipo especial NULL (incluidas variables no establecidas)
  • objetos SimpleXML creados desde etiquetas vacías

Cualquier otro valor se considera como TRUE (incluido cualquier resource y NAN).

Advertencia

-1 se considera TRUE, como cualquier otro número distinto de cero (ya sea negativo o positivo).

<?php
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)
?>