Re: Re: Weird comparison error.
| From: | Lars Torben Wilson | Date: | Sat, 28 Jun 2003 20:43:01 +0000 |
| Subject: | Re: Re: Weird comparison error. | ||
| References: | 1 2 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-153290@lists.php.net to get a copy of this message | ||
On Sat, 2003-06-28 at 11:28, Bobby Patel wrote:
> In PHP there are two operators for comparisons, the double and triple
> equivalance.
>
> Double equivalance just check's the boolean type so if (0 == 'n') is
> translated to if (False == False), where as triple equivalance checks the
> data types as well so if (0==='n') becomes if (Int(False)==String(False))
> but since the data types don't match that would be False.
>
> to get a better reference check PHP.net for 'Bolean Types' , because I
> think I dodn't explain the double equivalance right, and also it will
> clarify situations of the Null type.
>
> Bobby
You got pretty close, but not quite. :) In the case of the equality
operator '==', there is nothing specific to do with boolean evaluation
going on. It just converts the string to its integer value implicitly
before checking for equality, and according to the string->integer
conversion rules, the string ends up being (int) 0 so the whole thing
matches.
Also, it might be easier to think about the identical operator '===' as
just testing whether two values are identical, meaning that they are
both of the same type, and that they both have the same value.
More information:
http://www.php.net/manual/en/language.types.type-juggling.php
http://www.php.net/manual/en/language.types.string.php#language.types.string.conversion
...in fact, the whole 'Language' section of the manual has a bunch of
stuff on this.
Hope this helps,
Torben
--
Torben Wilson <torben@php.net> +1.604.709.0506
http://www.thebuttlesschaps.com http://www.inflatableeye.com
http://www.hybrid17.com http://www.themainonmain.com
-----==== Boycott Starbucks! http://www.haidabuckscafe.com ====-----