DEV Community

Cover image for Understanding PHP Types – Booleans
Abu Hurayra
Abu Hurayra

Posted on • Edited on

Understanding PHP Types – Booleans

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)
?>
Enter fullscreen mode Exit fullscreen mode

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);
}
?>
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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.";
}
?>
Enter fullscreen mode Exit fullscreen mode

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
?>
Enter fullscreen mode Exit fullscreen mode

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
?>
Enter fullscreen mode Exit fullscreen mode

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)
?>
Enter fullscreen mode Exit fullscreen mode

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
}
?>
Enter fullscreen mode Exit fullscreen mode

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
?>
Enter fullscreen mode Exit fullscreen mode

4. Case Sensitivity

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

Top comments (0)