RE: Question concerning SWITCH and Comparisons

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

 



I just copy and pasted your switch statement and it worked fine for me
the way you described it needed to work.

One thing I did notice, there's a semi-colon on the >= 2400 CASE, but it
still seemed to work ok for me (maybe I noticed and fixed that before I
tested >= 2400).

What error are you getting or what results using what values for $qty?


One thing I'll point out that I didn't know before but someone on here
enlightened me to was that there's two ways to use switch, one where you
use switch($variable) and your case statements are what the $variable is
equal to, or you can use other kinds of conditions in your case
statement, then it doesn't really matter what your switch() contains:


Switch ($variable) {
   case 0:
      echo "zero";
      break;
   case 1:
      echo "one";
      break;
   default:
      echo "other;
      break;
}

Or...


Switch (TRUE) {
   case ($variable < 0):
      echo "Negative";
      break;
   case ($variable < 100):
      echo "Under 100";
      break;
   case ($variable < 1000):
      echo "Under 1000";
      break;
   default:
      echo ">= 1000";
      break;
}


You can leave out break statements if you want it to execute certain
things for multiple cases in an additive fashion:

$sendemail = TRUE;
$tofield = "";
$ccfield = "";
$bccfield = "";

Switch ($sendemail) {
   case ($bcc <> ""):
      $bccfield = LookupEmailAddresses($bcc);
   case ($cc <> ""):
      $ccfield = LookupEmailAddresses($cc);
   case ($to <> ""):
      $tofield = LookupEmailAddresses($cc);
      SendEmail($tofield,$ccfield,$bccfield);
      break;
   default:
      echo "No recipients, email not sent";
      break;
}

In this case, it only processes BCC, CC and TO fields if they contain
data.  You might just enter "Trevor" and it runs the function
LookupEmailAddresses to find "tgryffyn@xxxxxxxxxxxxxxxxx" and inserts
that into the $bccfield variable.

Lastly, you can stack case clauses or use an OR operator to do something
when either condition is true:


Switch (TRUE) {
   case ($variable < 0):
   case ($variable >= 1000):
      echo "Out of range (either too large or too small)";
      break;
   case ($variable < 100):
      echo "Between 0 and 100";
      break;
   case ($variable < 1000):
      echo "Between 100 and 1000";
      break;
   default:
      echo "Some imaginary value";
      break;
}


You could also express that as:
   case ($variable < 0 OR $variable >= 1000):



I'm sure there are other ways to use Switch/Case.  I know you didn't ask
for a whole tutorial and stuff, but it's a good thing to know how to
use, very useful (and a lot nicer to play with than a bunch of nested
if/then/else's).

Did I screw anything up in those examples?  I'm sure someone will point
it out. Hah..  Any other creative uses for Switch that I missed?

-TG



> -----Original Message-----
> From: Tony Devlin [mailto:tdevlin@xxxxxxxxxxxxx] 
> Sent: Thursday, November 11, 2004 12:35 PM
> To: Php-Windows
> Subject:  Question concerning SWITCH and Comparisons
> 
> 
> If my understanding of SWITCH is correct, it stops at the 
> first case that
> matches the result, correct?
> 
> So then.. If I have a switch as such;
> 
> switch($qty){
> 
> case ($qty < 1600): //$qty is less than 1600
>   do something
> break;
> 
> case ($qty < 2400): //$qty is less than 2400
>   do something
> break;
> 
> case ($qty >= 2400); //$qty is greater than or equal to 2400
>   do something
> break;
> 
> default:
>  do something
> break;
> }
> 
> Then assuming $qty = 800, it should stop at the first case? right?
> 
> a $qty of 1601 should stop at the second case?
> 
> and a qty of greater than or equal to 2400 should stop at the 
> last case?
> 
> Am I correct with my switch statement then?
> 
> My desired result is;
> 
> If quantity is less than 1600 set price = whatever;
> or if quantity is equal to 1600 and less than 2400 set price 
> = whatever,
> or finally if quantity is equal to or greater than 2400 set price =
> whatever.
> 
> I'm having difficulties for whatever reason to come up with a proper
> comparison
> for the switch to work as described.  Can someone help me 
> iron out this
> small problem?
> 
> 
> Much thanks for the help,
> 
> Tony D.
> 

-- 
PHP Windows Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[Index of Archives]     [PHP Home]     [PHP Users]     [PHP Database Programming]     [PHP Install]     [Kernel Newbies]     [Yosemite Forum]     [PHP Books]

  Powered by Linux