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 assignment 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