To view the terms under which this email is distributed, please go to http://disclaimer.leedsmet.ac.uk/email.htm On 20 January 2005 20:36, Tim Boring wrote: > On Thu, 2005-01-20 at 14:40, Bret Hughes wrote: > > On Thu, 2005-01-20 at 12:43, Jason Wong wrote: > > > On Friday 21 January 2005 02:16, Tim Boring wrote: > > > > > > > It's perfectly legit to use expressions. Now perhaps there is > > > > something wrong with the regex I'm trying to use, but using a > > > > regex in and of itself is legal. > > > > http://www.php.net/manual/en/control-structures.switch.php > > > > > > Yes, but comparing those expressions to: > > > > > > switch ($line) > > > > > > where $line is a string, doesn't make sense. See my other post. > > > > > > > Chaching ( sound of light bulb turning on) I see that in the > > example in the manual it needs to be compared to true ( a boolean > > value) > > > > > > switch (true) > > > > rather than switch ($line) > > > > What is not apparent to me is why the first case matches if the preg > > fails. Wouldn't line evaluate to true in a boolean context? Coming a little late to the discussion here, but I don't think anyone's really cottoned on to the fact that: switch ($x): { case $e1: ... break; case $e2: ... break; ... } is functionally equivalent to: if ($x==$e1): ... elseif($x==$e2): ... ... endif; (except that the $x expression is evaluated only once, at the start, instead of multiple times). So it's important to be able to predict how an == comparison will perform, but because of the way PHP does automatic type conversion, this isn't always obvious (and, unfortunately, there's no switch() modifier to force === comparisons). I can't remember all the minute details, but basically it goes something like this: 0, 0.0, FALSE, '' and '0' all compare equal to each other. if one expression is Boolean, the other is converted to Boolean before comparison. if one expression is a number, the other is converted to a number (using usual PHP rules, so a string which does not start with a number is converted to 0). if both expressions are string, and both look like a number, both are converted to numbers and a numeric comparison is performed (so "3"=="3.0", for instance). In addition, the tables at http://php.net/types.comparisons may be of help, particularly table O-2. Cheers! Mike --------------------------------------------------------------------- Mike Ford, Electronic Information Services Adviser, Learning Support Services, Learning & Information Services, JG125, James Graham Building, Leeds Metropolitan University, Headingley Campus, LEEDS, LS6 3QS, United Kingdom Email: m.ford@xxxxxxxxxxxxxx Tel: +44 113 283 2600 extn 4730 Fax: +44 113 283 3211 -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php