Re: Re: Switch - Case Statement Questions

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



2012/11/16 Tim Streater <tim@xxxxxxxxxxxxxxxx>

> On 16 Nov 2012 at 12:10, Omar Muhsin <mrfroasty@xxxxxxxxx> wrote:
>
> > Hello,
> >
> > I was just wondering after writting the code in version 2 here below, it
> turns
> > out in testing that it actually PHP is not validating the expressions
> instead
> > always I get the first case.
> >
> > 1.Using nested if statement {THE INTENDED BEHAVIOR}:
> >        if ($count > 14)
> >            $boxes = 3;
> >        elseif($count > 7 && $count <= 14)
>
> You don't need the count<=14 part as you will *only* get there if
> $count<=14.
>
> >            $boxes = 2;
> >        else
> >            $boxes = 1;
> >
> > 2. Using Switch {ALWAYS FIRST CASE!!!}
> >
> > //        $boxes = 1;
> > //        switch ($count) {
> > //            case ($count > 14):
> > //                $boxes = 3;
> > //                break;
> > //            case ($count > 7 && $count <= 14):
> > //                $boxes = 2;
> > //                break;
> > //            case ($count <= 7):
> > //            default :
> > //                $boxes = 1;
> > //                break;
> > //        }
> >
> >
> > Does anyone know the answer why using the Switch it always execute the
> first
> > case ?
>
> As has been pointed out you need switch(true).
>
> That's a strange way of writing a switch, IMO. You should be using the if
> version.
>

Hi,

I've seen looooong discussions about this ;) I think this one is a example,
where 'switch(true)' is a legit expression, because switch-statements
define a construct, where the interpreter should select one of multiple
similar cases. This one seems legit, because they are very similar ;) It
says "In case of $count look like X do this, or $count look like Y do that,
or $count look like Z do something else (and so on)". For such  I find the
if-elseif-elseif-elseif-elseif-else-construction quite confusing.

Beside this it can be rewritten as

switch ((int) (($count-1) / 7) {
  case 0: // 1-7
  case 1: // 8 - 14
  default: // above 15
}


Regards,
Sebastian


>
> --
> Cheers  --  Tim
>
>
> --
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
>



-- 
github.com/KingCrunch

[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux