Skip to content

PHP Operators

Operators are special symbols used to perform operations on values (operands). PHP includes a wide range of operators categorized as follows:

  • Arithmetic operators
  • Assignment operators
  • Comparison operators
  • Increment/Decrement operators
  • Logical operators
  • String operators
  • Array operators
  • Conditional assignment operators
  • Type operators
  • Bitwise operators (less common in web development, not covered here)
  • Error control operator
  • Execution operator

Used with numeric values to perform common mathematical operations.

Used to assign a value to a variable. The basic assignment operator is =. Combined operators perform an operation and then assign the result.

Used to compare two values. These operators typically return a boolean (true or false).

Best Practice: Prefer strict comparison (===, !==) whenever possible to avoid unexpected behavior due to automatic type conversions (type juggling).

Used to increase or decrease a variable’s value, typically by one.

Example:

<?php
$a = 5;
echo ++$a; // Outputs 6 (a is now 6)
$b = 5;
echo $b++; // Outputs 5 (b is now 6)
echo $b; // Outputs 6
$c = 5;
echo --$c; // Outputs 4 (c is now 4)
$d = 5;
echo $d--; // Outputs 5 (d is now 4)
echo $d; // Outputs 4
?>

Used to combine conditional statements, typically operating on boolean values.

Note: && and || exhibit short-circuiting behavior. If the result can be determined from the left operand (e.g., false && ... or true || ...), the right operand is not evaluated.

PHP provides two operators specifically for string manipulation.

Example:

<?php
$firstName = "John";
$lastName = "Doe";
$fullName = $firstName . " " . $lastName; // "John Doe"
$message = "Hello";
$message .= ", world!"; // $message is now "Hello, world!"
echo $fullName . "\n";
echo $message . "\n";
?>

Used to combine or compare arrays.

Note: The + operator for arrays is often less intuitive than functions like array_merge() or array_replace(), which provide different behaviors for handling duplicate keys.

These operators provide shorthand ways to assign values based on conditions, often involving null checks.

Example:

<?php
$age = 20;
$status = ($age >= 18) ? 'Adult' : 'Minor'; // $status = 'Adult'
$username = $_GET['user'] ?: 'Guest'; // Uses 'Guest' if $_GET['user'] is empty or not set
$configValue = $settings['value'] ?? 100; // Uses 100 if $settings['value'] is null or not set
$options['timeout'] ??= 5000; // Sets $options['timeout'] to 5000 only if it wasn't already set
echo "Status: $status\n";
echo "Username: $username\n";
echo "Config Value: $configValue\n";
print_r($options);
?>

Warning: The use of the error control operator (@) is strongly discouraged. It makes debugging significantly harder by hiding potential problems. It’s almost always better to check for potential errors explicitly (e.g., using isset(), file_exists(), try...catch) or configure proper error reporting.

Warning: Using the backtick operator is also strongly discouraged due to major security risks if any user input is included in the command. It’s better to use safer alternatives like shell_exec(), exec(), or proc_open() with proper input escaping (e.g., escapeshellarg(), escapeshellcmd()) when you need to interact with the system shell.