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): Returnstrue
if both operands are true. -
||
(OR): Returnstrue
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.
Source link
lol