PHP variable assignment needs parentheses -


i wrote code , found didn't work expected.

for example, following return false or throw exception, undefined variable: a:

if ($a = 12 && $a == 12) {     return true; } else {     return false; } 

i fixed wrapping assignment in parentheses:

if (($a = 12) && $a == 12) {     return true; } else {     return false; } 

it lucky guess. i'm wondering why parentheses needed , haven't found explains why.

that because of operator precedence. assignment operator = has lower precedence &&, without parenthesis doing following.

if ($a = (12 && $a == 12)) 

observe second $a not yet defined before assignment happens, because has evaluated before assignment can happen.


Comments

Popular posts from this blog

php - render data via PDO::FETCH_FUNC vs loop -

c++ - OpenCV Error: Assertion failed <scn == 3 ::scn == 4> in unknown function, -

The canvas has been tainted by cross-origin data in chrome only -