1.2.369. Don’t Mix ++

++ operators, pre and post, have two distinct behaviors, and should be used separately.

When mixed in a larger expression, they are difficult to read, and may lead to unwanted behaviors.

<?php

    // Clear and defined behavior
    $i++;
    $a[$i] = $i;

    // The index is also incremented, as it is used AFTP the incrementation
    // With $i = 2; $a is array(3 => 3)
    $a[$i] = ++$i;

    // $i is actually modified twice
    $i = --$i + 1;
?>

See also EXP30-C. Do not depend on the order of evaluation for side effects.

1.2.369.1. Suggestions

  • Extract the increment from the expression, and put it on a separate line.

1.2.369.2. Specs

Short name

Structures/DontMixPlusPlus

Rulesets

All, Analyze

Exakat since

1.3.2

PHP Version

All

Severity

Minor

Time To Fix

Instant (5 mins)

Precision

High

Examples

Contao, Typo3

Available in

Entreprise Edition, Exakat Cloud