Re: switch issue
| From: | Chris | Date: | Sun, 06 Jan 2008 22:51:46 +0000 |
| Subject: | Re: switch issue | ||
| References: | 1 | Groups: | php.db |
| Request: | Send a blank email to php-db+get-44488@lists.php.net to get a copy of this message | ||
sublimino@gmail.com wrote:
Hello all, Having a problem with the behaviour of switch when mixing variable types. Eg <?php $page = 'review'; switch ($page) { case 0: echo "0"; break; case 'review': echo "review"; break; } ?> this code interprets $page as 0 in the switch. It's not a problem to alter 'review' to a number, just less elegant. Can anybody shed a little light on mixed variable types in switch statements please? While browsing the manual I noticed it performs "loose comparison" but that seems to be the same as == ?My guess is that it's converting '$page' from a string to an int to do the comparison because you don't have quotes around it. If you do: echo (int)'review'; you get 0. If you look at the Loose Comparisons table here: http://www.php.net/manual/en/types.comparisons.php#types.comparisions-loose In the "php" column (second from the right), when compared to 0 without quotes it evaluates to true, so it's expected behaviour. So change it to: case '0': echo '0'; break; -- Postgresql & php tutorials http://www.designmagick.com/