Assignments within sub-expressions are hard to spot and therefore make the code less readable. Ideally, sub-expressions should not have
side-effects.
Noncompliant Code Example
if (($val = value()) && check()) { // Noncompliant
}
Compliant Solution
$val = value();
if ($val && check()) {
}
or
if ($val == value() && check()) { // Perhaps in fact the equality operator was expected
}
Exceptions
Assignments in while
statement conditions, and assignments enclosed in relational expressions are allowed.
while (($line = next_line()) != NULL) {...}
while ($line = next_line()) {...}
See