Date: 07/01/01
- Next message: joe <email protected>: "[PHP-DEV] Bug #11806 Updated: Using $string = md5($string); crashed HTTP child processes"
- Previous message: CVS Account Request: "[PHP-DEV] CVS Account Request"
- In reply to: Brian Moon: "Re: [PHP-DEV] switch, equality and preg_match"
- Next in thread: Brian Moon: "Re: [PHP-DEV] switch, equality and preg_match"
- Reply: Brian Moon: "Re: [PHP-DEV] switch, equality and preg_match"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
I wasn't intending to throw blame at preg_match - My main concern is what
switch is doing - executing the first CASE when the input is either 0 or
TRUE.
I don't think switch should execute the first CASE whenever a numeric 0 is
fed into it.
Even TRUE gives me problems. And with 0 == FALSE, it all seems so messed up.
Chris
>
> 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 <email protected>>
> To: <php-dev <email protected>>
> 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 <email protected>
> > For additional commands, e-mail: php-dev-help <email protected>
> > To contact the list administrators, e-mail: php-list-admin <email protected>
> >
> >
> >
>
>
-- PHP Development Mailing List <http://www.php.net/> To unsubscribe, e-mail: php-dev-unsubscribe <email protected> For additional commands, e-mail: php-dev-help <email protected> To contact the list administrators, e-mail: php-list-admin <email protected>
- Next message: joe <email protected>: "[PHP-DEV] Bug #11806 Updated: Using $string = md5($string); crashed HTTP child processes"
- Previous message: CVS Account Request: "[PHP-DEV] CVS Account Request"
- In reply to: Brian Moon: "Re: [PHP-DEV] switch, equality and preg_match"
- Next in thread: Brian Moon: "Re: [PHP-DEV] switch, equality and preg_match"
- Reply: Brian Moon: "Re: [PHP-DEV] switch, equality and preg_match"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]

