Booleanos

El tipo bool solo tiene dos valores y se usa para expresar un valor de verdad. Puede ser true (verdadero) o false (falso).

Sintaxis

Para especificar un literal de tipo bool 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 bool 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 a bool, usa la conversión (bool). Generalmente, esto no es necesario porque cuando un valor se usa en un contexto lógico, se interpretará automáticamente como un valor de tipo bool. Para más información, consulta la página Type Juggling.

Cuando se realizan conversiones a bool, los siguientes valores se consideran false:

  • el boolean false mismo
  • el integer 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 de unidad NULL (incluidas variables no establecidas)
  • Objetos internos que sobrecargan su comportamiento de conversión a bool. Por ejemplo: objetos SimpleXML creados a partir de elementos vacíos sin atributos.

Cualquier otro valor se considera `true` (incluyendo 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) "0"); // 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)
?>