Recipe 5.1. Avoiding == Versus = Confusion5.1.1. ProblemYou don't 5.1.2. SolutionUse: 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.) 5.1.3. DiscussionPutting 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. Since 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 5.1.4. See AlsoDocumentation for = at http://www.php.net/language.operators.assignment.php and for == and === at http://www.php.net/manual/language.operators.comparison.php. |
Friday, December 25, 2009
Recipe 5.1. Avoiding==Versus=Confusion
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment