PHP Variables Avoiding == Versus = Confusion - Supercoders | Web Development and Design | Tutorial for Java, PHP, HTML, Javascript PHP Variables Avoiding == Versus = Confusion - Supercoders | Web Development and Design | Tutorial for Java, PHP, HTML, Javascript

Breaking

Post Top Ad

Post Top Ad

Tuesday, May 21, 2019

PHP Variables Avoiding == Versus = Confusion

PHP Variables




Avoiding == Versus = Confusion

Problem

You don’t want to accidentally assign values when comparing a variable and a constant.

Solution

Use:

           if (12 == $dwarves) { ... }

instead of:

           if ($dwarves == 12) { ... }

Putting the constant on the left triggers a parse error with the assignment operator. In other words, PHP complains when you write:

           if (12 = $dwarves) { ... }
but:

           if ($dwarves = 12) { ... }

silently executes, assigning 12 to the variable $dwarves, and then executing the code inside the block. ($dwarves = 12 evaluates to 12, which is true.)

Discussion

Putting a constant on the left side of a comparison coerces the comparison to the type of the constant. This causes problems when you are comparing an integer with a variable that could be an integer or a string. 0 == $dwarves is true when $dwarves is 0, but it’s also true when $dwarves is sleepy. 

Because an integer (0) is on the left side of the comparison, PHP converts what’s on the right (the string sleepy) to an integer (0) before comparing. To avoid this, use the identity operator, 0 === $dwarves, instead.


No comments:

Post a Comment

Post Top Ad