PHP Increment and Decrement Operators


Introduction to PHP Increment and Decrement Operators

Increment and decrement operators in PHP are essential unary operators that provide a concise way to increase or decrease a variable's value by 1. These operators play a crucial role in loop structures, counter implementations, and various algorithmic operations. Understanding these operators is fundamental for efficient PHP programming, particularly when working with iterative processes, array manipulations, and numerical computations.

This in-depth guide covers all aspects of PHP's increment and decrement operators, including their syntax variations, behavior differences, practical applications, and performance considerations. Each concept is demonstrated with clear code examples showing both the operation and its output.



Types of PHP Increment and Decrement Operators

PHP provides four variations of increment and decrement operators:

Operator Name Description Effect
++$var Pre-increment Increments $var by 1, then returns $var Immediate increase before use
$var++ Post-increment Returns $var, then increments it by 1 Use original value, then increase
--$var Pre-decrement Decrements $var by 1, then returns $var Immediate decrease before use
$var-- Post-decrement Returns $var, then decrements it by 1 Use original value, then decrease

1. Pre-increment Operator (++$var)

The pre-increment operator first increases the variable's value by 1, then returns the new value.

Example


<?php
$counter = 5;
echo ++$counter;  // Outputs the incremented value immediately
echo $counter;    // Shows the current value
?>

Output

6
6

Practical Use Case: Array Indexing

<?php
$index = 0;
$array = [10, 20, 30];
echo $array[++$index];  // Access element 1 (20)
?>

Output

20


2. Post-increment Operator ($var++)

The post-increment operator returns the variable's current value, then increments it by 1.

<?php
$count = 5;
echo $count++;  // Outputs 5, then increments
echo $count;    // Now shows 6
?>

Output

5
6

Loop Implementation Example:

<?php
for ($i = 0; $i < 3; $i++) {
    echo "Iteration: $i\n";
}
?>

Output

Iteration: 0
Iteration: 1
Iteration: 2


3. Pre-decrement Operator (--$var)

The pre-decrement operator first decreases the variable's value by 1, then returns the new value.

<?php
$value = 8;
echo --$value;  // Outputs 7 immediately
echo $value;    // Confirms current value
?>

Output

7
7

Countdown Implementation:

<?php
$timer = 3;
while (--$timer >= 0) {
   echo "$timer...\n";
}
?>

Output

2...
1...
0...


4. Post-decrement Operator ($var--)

The post-decrement operator returns the variable's current value, then decrements it by 1.

<?php
$stock = 3;
echo $stock--;  // Outputs 3, then decrements
echo $stock;    // Now shows 2
?>

Output

3
2

Array Processing Example:

<?php
$items = ['a', 'b', 'c'];
$lastIndex = count($items) - 1;
while ($lastIndex >= 0) {
    echo $items[$lastIndex--] . "\n";
}
?>

Output

c
b
a

Key Differences Between Pre and Post Operators


Aspect Pre-increment/decrement Post-increment/decrement
Operation Timing Increment/decrement happens before value return Increment/decrement happens after value return
Return Value Returns modified value Returns original value
Performance Slightly more efficient in some cases Slightly less efficient
Common Uses When immediate modified value is needed When original value is needed first

Comparison Example:

<?php
$a = 5;
$b = 5;
        
$pre = ++$a;  // $a becomes 6, $pre = 6
$post = $b++; // $post = 5, $b becomes 6
        
echo "Pre: $pre, Post: $post";
?>

Output

Pre: 6, Post: 5

Special Behaviors and Edge Cases


1. Character Increment

PHP supports incrementing alphabetical characters:


<?php
$char = 'A';
echo ++$char;  // Outputs 'B'
?>

Output

B

2. String with Numeric Values


<?php
$version = '1.9';
echo ++$version;  // Outputs '2.0'
?>

Output

2.0

3. Boolean Values


<?php
$flag = true;
$flag++;
var_dump($flag);  // bool(true) - no effect
?>

Output

bool(true)

Performance Considerations

  • Pre-operators are generally faster than post-operators in isolation
  • Difference is negligible in most real-world applications
  • Compiler optimizations often eliminate any practical difference
  • Readability should be prioritized over micro-optimizations

Benchmark Example:

<?php
$start = microtime(true);
for ($i = 0; $i < 1000000; ++$i) {}
$pre_time = microtime(true) - $start;
        
$start = microtime(true);
for ($i = 0; $i < 1000000; $i++) {}
$post_time = microtime(true) - $start;
        
echo "Pre: $pre_time, Post: $post_time";
?>

Sample Output

Pre: 0.012345, Post: 0.012678

Best Practices for Increment/Decrement Operators

  • Be consistent with your operator choice throughout a project
  • Use pre-operators when the modified value is needed immediately
  • Use post-operators when the original value is required first
  • Avoid complex expressions combining multiple increments/decrements
  • Document unusual uses of these operators
  • Consider readability over clever one-liners