Re: why is (intval('444-44444') == '444-44444') EQUAL??!

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





On 12-06-21 10:27 PM, Daevid Vincent wrote:
Huh? Why is this equal??!

	php>  $id = '444-44444';

	php>  var_dump($id, intval($id));
	string(9) "444-44444"
	int(444)

	php>  if (intval($id) == $id) echo 'equal'; else echo 'not equal';
	equal

or in other words:

	php>  if (intval('444-44444') == '444-44444') echo 'equal'; else
echo 'not equal';
	equal

I would expect PHP to be evaluating string "444-44444" against integer "444"
(or string either way)

however, just for giggles, using === works...

	php>  if ($id === intval($id)) echo 'equal'; else echo 'not equal';
	not equal

Using === will always fail because on the left you have a string and on the right you have an integer which fails exact comparison based on datatype mismatch.

When comparing a string to an integer using == PHP performs type juggling and converts the string to an integer first.

Cheers,
Rob.
--
E-Mail Disclaimer: Information contained in this message and any
attached documents is considered confidential and legally protected.
This message is intended solely for the addressee(s). Disclosure,
copying, and distribution are prohibited unless authorized.

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux