Bug #15010 Updated: switch() problem: "+" matches "-"

From: Date: Tue, 15 Jan 2002 08:56:57 +0000
Subject: Bug #15010 Updated: switch() problem: "+" matches "-"
References: 1  Groups: php.dev 
Request: Send a blank email to php-dev+get-77103@lists.php.net to get a copy of this message
ID: 15010
Updated by: alexwaugh
Old Summary: switch() problem: "+" matches "-"
Reported By: matthew.somerville@trinity.oxford.ac.uk
Old Status: Open
Status: Assigned
Bug Type: Variables related
Operating System: RISC OS
PHP Version: 4.1.0
Old Assigned To: 
Assigned To: alexwaugh


Previous Comments:
------------------------------------------------------------------------

[2002-01-12 18:29:33] mfischer@php.net

Ok, sorry. I misread your report a bit ;)

So this applies only to RISC OS ? Can't reproduce this under linux.

------------------------------------------------------------------------

[2002-01-12 18:27:01] mfischer@php.net

Jesus man.

case statements not followed by a break; statement fall through.

Your code should read:

<? $k = "+";
   switch($k) {
     case "-": print "Oh no!"; break;
     case "+": print "Correct!"; break;
   }
?>

------------------------------------------------------------------------

[2002-01-12 18:21:28] matthew.somerville@trinity.oxford.ac.uk

<? $k = "+";
   switch($k) {
     case "-": print "Oh no!";
     case "+": print "Correct!";
   }
?>

outputs "Oh no!". I guess this is because as switch uses
==, + and - are both being automatically converted to the
number 0 which then matches? Could switch() perhaps use
=== instead of == in its comparison?


------------------------------------------------------------------------



Edit this bug report at http://bugs.php.net/?id=15010&edit=1



Thread (8 messages)

« previous php.dev (#77103) next »