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