|
Posted by Michael Winter on 07/03/05 01:52
On 02/07/2005 23:34, Marcus wrote:
[snip]
> if anything, I would have thought testing if ['default'] == 1 would
> be a boolean true since the variable exists and is not NULL, but
> testing if ['default'] == 1 returns FALSE.
This is due to implicit type conversion. When you use the equality (==)
rather than strict equality (===) and compare two different types, the
values are converted into something that can be compared in some
meaningful way.
If you compare a string to a number, an attempt is made to convert that
string to a number first. If the string starts with valid number data,
then that will be the used value, otherwise the comparison will be
against zero (0).
The string 'default' doesn't have anything resembling a number at its
start, so it will be converted to zero. You then perform a comparison
against literal zero, hence the expression evaluates to true.
See the type comparison page[1], as well as the section on converting
strings to numbers[2], in the manual.
Mike
[1] <URL:http://www.php.net/manual/en/types.comparisons.php>
[2]
<URL:http://www.php.net/manual/en/language.types.string.php#language.types.string.conversion>
--
Michael Winter
Prefix subject with [News] before replying by e-mail.
[Back to original message]
|