PHP 4.0 Bug #9186 Updated: string compare with "==" does not work correctly
| From: | tom dot anheyer at berlinonline dot de | Date: | Thu, 15 Feb 2001 10:07:35 +0000 |
| Subject: | PHP 4.0 Bug #9186 Updated: string compare with "==" does not work correctly | ||
| Groups: | php.dev | ||
| Request: | Send a blank email to php-dev+get-46629@lists.php.net to get a copy of this message | ||
ID: 9186
User Update by: tom.anheyer@berlinonline.de
Status: Analyzed
Bug Type: Documentation problem
Description: string compare with "==" does not work correctly
Ok, I accept this. But I don't think that is a good idea
to compare apples with pears with the answer 'yes they are
fruit' without any warning.
Previous Comments:
---------------------------------------------------------------------------
[2001-02-15 04:32:00] zeev@php.net
Ok, it should remain open as a documentation problem...
---------------------------------------------------------------------------
[2001-02-15 04:31:01] zeev@php.net
This is a defined behavior (and does have strong reasons). It's not a bug.
If you're interested in a byte-by-byte string comparison, you should use strcmp().
---------------------------------------------------------------------------
[2001-02-09 11:10:17] zak@php.net
Incorrectly flagged as bogus.
---------------------------------------------------------------------------
[2001-02-09 10:59:10] tom.anheyer@berlinonline.de
I think there is no reason to convert any type if both
operands of the comparision are of the same type. It costs
time and it's completely not necessary. This is a bug.
I can not see any description of this behavior in the
manual. The string type section descibes only what is
happen if a string is converted.
---------------------------------------------------------------------------
[2001-02-09 10:27:46] zak@php.net
Actually, this is a feature - it is described in the manual. Strings that look like numbers are
converted to numbers. Large numbers - like the ones below may not convert perfectly from a string to
a number. Review the manual section on PHP types in general and strings in particular
(http://uk.php.net/manual/en/language.types.string.php)
While this is a relatively subtle bug, you can ensure that you are dealing with strings by quoting
the variables being compared or by using the === operator. This behavior is exploited quite often
in PHP scripts. However, perhaps it would be nice if PHP generated an notice level error when it
occured so that users have some recourse when it happens unexpectedly.
If you feel strongly about this, propose it to the developers as a feature request. Post your
request on the php-dev@lists.php.net list (sub at php-dev-subscribe@lists.php.net) - if you get no
response, be polite but persistant. :)
---------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view the rest of the comments,
please view the bug report online.
Full Bug description available at: http://bugs.php.net/?id=9186