note 102276 added to control-structures.switch

From: 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

« previous php.notes (#176705) next »