Re: switch, equality and preg_match
| From: | Daniel Beckham | Date: | Sun, 01 Jul 2001 14:06:21 +0000 |
| Subject: | Re: switch, equality and preg_match | ||
| References: | 1 2 | Groups: | php.dev |
| Request: | Send a blank email to php-dev+get-58612@lists.php.net to get a copy of this message | ||
Someone poke me when you decide what to do and I'll change the return type
in the preg_match docs.
Daniel
----- Original Message -----
From: "Brian Moon" <brianm@dealnews.com>
To: "chrism" <chrism@FOUR.net>; <php-dev@lists.php.net>
Cc: <andrei@ispi.net>
Sent: Sunday, July 01, 2001 3:16 AM
Subject: Re: [PHP-DEV] switch, equality and preg_match
> Here is your culprit:
>
> RETVAL_LONG(matched);
>
> The declaration in the docs says the function returns an int. However,
the
> text of the doc says that the function returns True or False.
>
> Changing your call to:
>
> $match = (bool)preg_false(); /* prints alpha always */
>
> gives you the results you want.
>
> Andrei, you are listed as the author on this file. What needs to change?
> The return type? That would make the most sense to me.
>
> Brian Moon
> ----------------------------------------------------------------------
> dealnews.com, Inc.
> Makers of dealnews, dealmac
> http://dealnews.com/ |
> http://dealmac.com/
>
>
> ----- Original Message -----
> From: "chrism" <chrism@FOUR.net>
> To: <php-dev@lists.php.net>
> Sent: Saturday, June 30, 2001 7:02 PM
> Subject: [PHP-DEV] switch, equality and preg_match
>
>
> > I encountered a problem where the result of a preg_match was FALSE.
> > This was fed into a switch statement - and I believe PHP executed the
> > the wrong case section.
> >
> > I've tracked this down to preg_match not really returning FALSE
> > combined with SWITCH executing the first case statement always on either
> > a numeric 0 or BOOLEAN TRUE.
> >
> > As a consequence of auto type conversion, you can't mix
> > STRING/NUMERIC/BOOLEAN within a switch. And with the preg_match issue,
> > you can't assume all input into your switch will be of one TYPE
(BOOLEAN).
> >
> > Aside from changing functions to return real booleans....
> >
> > 1. Should type conversion be turned off inside switch() ?
> > 2. If 0 == FALSE then why 0 == "ANYTHING" ?
> >
> > Chris
> >
> > <?
> >
> > /* auto type conversion is the root of my switch problem */
> >
> > if (0 == "ONE") echo "one\n"; /* TRUE */
> > if (1 == "TWO") echo "two\n"; /* FALSE */
> > if (TRUE == "THREE") echo "three\n"; /* TRUE */
> > if (FALSE == "FOUR") echo "four\n"; /* FALSE */
> >
> > if (TRUE == 0) echo "hopefully not\n";
> >
> > function preg_false() {
> > return(preg_match("/no/", "dXiuehXX"));
> > }
> >
> > /* note the difference between FALSE and preg_false() */
> >
> > // $match = TRUE; /* prints alpha always */
> > // $match = 0; /* prints alpha always */
> > // $match = FALSE; /* prints gamma section */
> > $match = preg_false(); /* prints alpha always */
> >
> > if(is_bool($match) == TRUE) echo "match is boolean\n";
> >
> > switch($match) {
> > case "ALPHA":
> > echo "hmm.. alpha\n";
> > break;
> > case "BETA":
> > echo "hmm.. beta\n";
> > break;
> > case 0:
> > echo "hmm.. gamma\n";
> > break;
> > case TRUE:
> > echo "hmm.. TRUE\n";
> > break;
> > case FALSE:
> > echo "hmm.. FALSE\n";
> > break;
> > }
> >
> > ?>
> >
> > --
> > PHP Development Mailing List <http://www.php.net/>
> > To unsubscribe, e-mail: php-dev-unsubscribe@lists.php.net
> > For additional commands, e-mail: php-dev-help@lists.php.net
> > To contact the list administrators, e-mail: php-list-admin@lists.php.net
> >
> >
> >
>
>
> --
> PHP Development Mailing List <http://www.php.net/>
> To unsubscribe, e-mail: php-dev-unsubscribe@lists.php.net
> For additional commands, e-mail: php-dev-help@lists.php.net
> To contact the list administrators, e-mail: php-list-admin@lists.php.net
>
>