note 102276 added to control-structures.switch
| From: | jekyl1982 at osu1 dot php dot net | Date: | Sat, 05 Feb 2011 19:03:59 +0000 |
| Subject: | note 102276 added to control-structures.switch | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-176705@lists.php.net to get a copy of this message | ||
Problem with (int)0 in switch statement
<?php
// param
$param = 1;
// should be bool(true)
var_dump(preg_match('/[0-9]/', $param) === 1);
echo "<BR>";
// should be bool(false)
var_dump(preg_match('/[0-9]/', $param) === 0);
echo "<BR>";
// should be bool(false)
var_dump(preg_match('/[a-z]/', $param) === 1);
echo "<BR>";
// now some kind of black magic
// for $param = 0 it will print STRING but for $param = 1 it will print INT
switch ($param) {
case (preg_match('/[0-9]/', $param) === 1):
echo 'INT';
break;
case (preg_match('/[a-z]/', $param) === 1):
echo 'STRING';
break;
default:
echo 'nothing';
}
// good match, in switch put (bool)TRUE
switch (TRUE) {
case (preg_match('/[0-9]/', $param) === 1):
echo 'INT';
break;
case (preg_match('/[a-z]/', $param) === 1):
echo 'STRING';
break;
default:
echo 'nothing';
}
// now it will print INT
// isn't it strange have fun with PHP ;)
?>
----
Server IP: 69.147.83.197
Probable Submitter: 212.106.163.103
----
Manual Page -- http://www.php.net/manual/en/control-structures.switch.php
Edit -- https://master.php.net/note/edit/102276
Del: integrated -- https://master.php.net/note/delete/102276/integrated
Del: useless -- https://master.php.net/note/delete/102276/useless
Del: bad code -- https://master.php.net/note/delete/102276/bad+code
Del: spam -- https://master.php.net/note/delete/102276/spam
Del: non-english -- https://master.php.net/note/delete/102276/non-english
Del: in docs -- https://master.php.net/note/delete/102276/in+docs
Del: other reasons-- https://master.php.net/note/delete/102276
Reject -- https://master.php.net/note/reject/102276
Search -- https://master.php.net/manage/user-notes.php