Understanding the Crucial Difference: &&/|| vs. and/or in PHP

Qisthi Ramadhani
3 min readMar 26, 2025

As a PHP developer, we often face various choices of logical operators to combine conditions. Two sets of operators that often cause confusion are &&/|| and and/or. Although they look similar, a fundamental difference in precedence or order of execution can produce unexpected results if not well understood. This article will thoroughly examine these differences, provide code examples, and practical guidance so you can use logical operators accurately and effectively.

Photo by Ben Griffiths on Unsplash

What is Operator Precedence?

Before discussing the differences between these two sets of operators, it’s important to understand the concept of operator precedence. In mathematics and programming, operator precedence determines the order in which operations are performed in an expression. Operators with higher precedence are executed first.

A simple example:

$result = 2 + 3 * 4; // The result is 14, not 20

In the example above, multiplication (*) has higher precedence than addition (+). Therefore, 3 * 4 is executed first, and then the result is added to 2.

The Difference Between &&/|| and and/or

The main difference between &&/|| and and/or lies in their precedence. The && (AND) and || (OR) operators have higher precedence compared to and and or. In fact, and and or have lower precedence than almost any other operator in PHP, including the assignment operator (=).

This is what causes potential problems. When and or or are used in expressions involving other operators, PHP may not execute the boolean operation as we expect.

Code Examples and Explanation

Let’s look at some code examples to clarify these differences:

Example 1: Using and

<?php

$true = true;
$false = false;
$result = $true and $false;
var_dump($result); // Output: bool(true)

In the example above, we might expect $result to be false. However, the result is $result being true. Why? Because the assignment operator (=) has higher precedence than and. So, PHP executes $result = $true first, which results in $result being true. Then, the operation true and $false is evaluated, but the result is not stored anywhere.

Example 2: Using &&

<?php

$true = true;
$false = false;
$result = $true && $false;
var_dump($result); // Output: bool(false)

In this example, $result is false as we expect. Because && has higher precedence than =, PHP evaluates $true && $false first, which results in false. Then, false is assigned to $result.

Example 3: Using or

<?php

$true = true;
$false = false;
$result = $false or $true;
var_dump($result); // Output: bool(false)

Just like the and example, we might expect $result to be true. However, because = has higher precedence, PHP executes $result = $false first, so $result becomes false.

Example 4: Using ||

<?php

$true = true;
$false = false;
$result = $false || $true;
var_dump($result); // Output: bool(true)

In this example, $result is true because || has higher precedence.

When to Use and/or?

Although and and or often cause problems, there are certain situations where their use can be justified, namely when we want to conditionally execute several statements based on the success of the previous statement, and we want to avoid excessive use of parentheses.

Example:

<?php

$file = fopen("data.txt", "r") or die("Unable to open file!");

In this example, if fopen() fails (returns false), then die() will be executed. The use of or here is more concise than using || with parentheses.

Conclusion and Recommendations

The difference in precedence between &&/|| and and/or in PHP can cause unexpected behavior if not well understood. To avoid confusion and ensure your code runs as expected, it is recommended to always use && and || for boolean operations.

By understanding this difference, you can write PHP code that is cleaner, easier to understand, and more bug-free. Good luck!

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

--

--

Qisthi Ramadhani
Qisthi Ramadhani

No responses yet

Write a response