Re: Re: Bug #13304 Updated: string comparisons not working as expected

From: Date: Sat, 15 Sep 2001 08:42:56 +0000
Subject: Re: Re: Bug #13304 Updated: string comparisons not working as expected
References: 1  Groups: php.dev 
Request: Send a blank email to php-dev+get-65990@lists.php.net to get a copy of this message
You should use strcmp() Andi At 11:20 AM 9/14/2001 -0700, Chris Lee wrote:
your right === does work, I still feel that the internal auto-conversion should recognize that the string is to long to be an int and treat both as a sting. how would you force an if statement to use typecasting ? ie. if ( '12.00' == '12' ) will equal as true, but maybe I want it to be compared as a string, therfore false. if ( (string)'12.00' == (string)'12' ) doesnt work as I have found and you confirmed. ? you have to use strcmp() ? it would be real nice to see that built in vs a function. Chris Lee lee@mediawaveonline.com ----- Original Message ----- From: "Bug Database" <php-dev@lists.php.net> To: <lee@mediawaveonline.com> Sent: Friday, September 14, 2001 10:09 AM Subject: Bug #13304 Updated: string comparisons not working as expected ID: 13304 Updated by: hholzgra Reported By: lee@mediawaveonline.com Old Status: Open Status: Closed Bug Type: *General Issues Operating System: linux PHP Version: 4.0.6 New Comment: (string) casting won't help as it takes place *before* autoconversion just use strcmp() or the tripple === operator Previous Comments: ------------------------------------------------------------------------ [2001-09-14 12:50:18] lee@mediawaveonline.com <?php function check($var_1, $var_2) { if ( $var_1 == $var_2 ) echo "a true <br>\n"; else echo "a false <br>\n"; if ( (string)$var_1 == (string)$var_2 ) echo "b true <br>\n"; else echo "b false <br>\n"; if ( strcmp($var_1, $var_2) == 0 ) echo "c true <br>\n"; else echo "c false <br>\n"; } check('997310325024327300', '997310325024327300'); check('997310325024327300', '997310325024327301'); ?> php-4.0.6 09:51 -root- /home/httpd/vhosts/blazers php -q test.php a true <br> b true <br> c true <br> a true <br> b true <br> c false <br> 09:51 -root- /home/httpd/vhosts/blazers ok I can understand the first if() failing, php is conffused and things I want to compare int not strings, this is a peave because php only supports upto signed long int, which this is much larger, I think php should realize this and compare them as strings. the second fails too .. ? this is strange because I have spec. type casted that as strings, they should compare fine as strings. this is where I beleive there is more then a quirk and more of a bug. the third susceeds just as it should, its just not near as elegant as a simple if ($var_1 == $var_2). -- Chris Lee lee@mediawaveonline.com ------------------------------------------------------------------------ ATTENTION! Do NOT reply to this email! To reply, use the web interface found at http://bugs.php.net/?id=13304&edit=2 -- 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 (#65990) next »