Understanding PHP Types – Booleans



This content originally appeared on DEV Community and was authored by Abu Hurayra

What is a Boolean?

In PHP, a Boolean is a data type that can have only two values:

  • true: Represents a positive or affirmative state.
  • false: Represents a negative or false state.

Boolean values are often used in conditional statements, comparisons, and logical operations. It is important to note that both true and false are case-insensitive. So, true, True, truE, TRUE are all valid.

Creating Boolean Variables

You can create a Boolean variable by assigning the values true or false directly:

Example:

<?php
$isAvailable = true;  // Boolean variable set to true
$isLoggedIn = false;  // Boolean variable set to false

var_dump($isAvailable); // Output: bool(true)
var_dump($isLoggedIn);  // Output: bool(false)
?>

The var_dump() function is used here to display the type and value of the variables.

Boolean Conversion

In PHP, many data types can be converted to Boolean. A value can be type casted into boolean using (bool). Generally this is not necessary because when a value is used in a logical context it will be automatically interpreted as a value of type bool.

When converting to boolean, the following values will return false:

  • the boolean false itself
  • the integer value 0
  • the float values 0.0 and -0.0
  • empty string, ""
  • string with a single zero, "0"
  • an empty array
  • the type null
  • variables that are unset
  • some other complex values

All other values are considered true, including resource and NAN.

Example:

<?php
$values = [0, 1, "", "Hello", [], [1, 2, 3], null, 0.0, 3.14];
foreach ($values as $value) {
    var_dump((bool)$value);
}
?>

Output:


bool(false) // 0
bool(true) // 1
bool(false) // ""
bool(true) // "Hello"
bool(false) // []
bool(true) // [1, 2, 3]
bool(false) // null
bool(false) // 0.0
bool(true) // 3.14

Using Booleans in Conditional Statements

Booleans are primarily used in conditional statements such as if, else, and switch to control the flow of the program.

Example:

<?php
$isUserLoggedIn = true;

if ($isUserLoggedIn) {
    echo "Welcome, User!"; // This message will be displayed
} else {
    echo "Please log in.";
}
?>

In this example, since $isUserLoggedIn is true, the message “Welcome, User!” will be displayed.

Comparison Operators and Booleans

PHP provides various comparison operators that return Boolean values:

  • Equality (==): Checks if values are equal.
  • Identity (===): Checks if values and types are identical.
  • Inequality (!= or <>): Checks if values are not equal.
  • Non-identity (!==): Checks if values or types are not identical.
  • Greater than (>) and Less than (<): Used for numeric comparisons.

Example:

<?php
$a = 10;
$b = "10";

var_dump($a == $b);   // Output: bool(true)  - values are equal
var_dump($a === $b);  // Output: bool(false) - types are different
var_dump($a > 5);     // Output: bool(true)  - 10 is greater than 5
var_dump($a != 10);   // Output: bool(false) - 10 is equal to 10
?>

Logical Operators and Booleans

Logical operators are used to combine or negate Boolean expressions:

  • && (AND): Returns true if both operands are true.
  • || (OR): Returns true if at least one operand is true.
  • ! (NOT): Negates a Boolean expression.

Example:

<?php
$isMember = true;
$hasPaid = false;

if ($isMember && $hasPaid) {
    echo "Access granted.";  // Will not be executed
} else {
    echo "Access denied.";   // Output: Access denied.
}

$isAdmin = !$isMember;
var_dump($isAdmin);  // Output: bool(false) - negates true to false
?>

Some Boolean Caveats

1. Loose Comparisons

Using == can lead to unexpected results due to type juggling. Always use === for strict comparisons.

Example:

<?php
var_dump(0 == false);  // Output: bool(true)
var_dump(0 === false); // Output: bool(false)
?>

In the first case, 0 and false are considered equal because 0 converts to false when compared loosely.

2. Falsy Values

Certain values like 0, "0", and empty arrays are considered false, which can sometimes lead to logical errors.

Example:

<?php
$var = "0";

if ($var) {
    echo "True";  // This will not be displayed
} else {
    echo "False"; // Output: False
}
?>

3. Short-Circuit Evaluation

Logical operators && and || use short-circuit evaluation. This means if the result is determined by the first operand, the second operand is not evaluated.

Example:

<?php
$x = false && foo(); // foo() will not be called because $x is false
$y = true || foo();  // foo() will not be called because $y is true
?>

4. Case Sensitivity

true and false are case-insensitive, so True, FALSE, and fAlSe are valid but not recommended for consistency.


This content originally appeared on DEV Community and was authored by Abu Hurayra