Re: switch, equality and preg_match

From: 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 > >

« previous php.dev (#58612) next »