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

 ID:                 54652
 Updated by:         ras...@php.net
 Reported by:        rdli dot data at gmail dot com
 Summary:            Bug when switch expression is zero
 Status:             Bogus
 Type:               Bug
 Package:            Unknown/Other Function
 PHP Version:        5.3SVN-2011-05-02 (SVN)
 Block user comment: N
 Private report:     N

 New Comment:

Because you have $price=50 there instead of $price==50


Previous Comments:
------------------------------------------------------------------------
[2011-05-03 02:23:16] rdli dot data at gmail dot com

function myPrice($price){

switch (true) {

        case ($price > 100) :

                echo '$price = ', $price, '<br />';

                echo "Price is $100 up.";

                break;



        case (($price > 50) || ($price =50)):

                echo '$price = ', $price, '<br />';

                echo "Price is $50 and up.";

                break;



        case ($price >25):

                echo "Price is $25 up.";

                break;



        default:

                echo "Price is no more then $25.";

                break;



        }

}



When parameter $price is less than 50, for example 30, execute
myPrice(30), 

actual result always is:



$price = 50

Price is $50 and up.

------------------------------------------------------------------------
[2011-05-03 01:16:43] pierr...@php.net

You need to replace switch($price) by switch(true) so that the first
case with an 

expression evaluated to true will be executed.



http://fr.php.net/manual/en/control-structures.switch.php

------------------------------------------------------------------------
[2011-05-02 23:06:22] felipecg00 at gmail dot com

($price > 100) is false.

false is 0, then case is executed.

------------------------------------------------------------------------
[2011-05-02 22:54:12] rdli dot data at gmail dot com

Description:
------------
//execute function parameter with $price = 0



myPrice(0);





Test script:
---------------
function myPrice($price = 50 ){

switch ($price) {

   case ($price > 100) :

   echo $price, '<br />';

   echo "Price is $100 up.";

   break;



   case ($price > 50) :

   echo "Prince is $50 up.";

   break;



   case ($price >25):

   echo "Prince is $25 up.";

   break;



   default:

   echo "Prince is no more then $25.";

   break;



   }

}



Expected result:
----------------
Prince is no more then $25.

Actual result:
--------------
0

Price is $100 up.




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



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

Reply via email to