WarpConduit Computing

  • Quick Tips
  • Web Design & Development
  • Graphic Design
  • Home
  • WordPress Plugins
  • Password Generator
  • About
  • Contact

Loose comparisons with ==

May 1, 2015 by Josh Hartman

My ZCE studies didn’t expose me to these edge cases, well except for the first one.

If you use == watch out for these and related:

<?php
echo ((0 == 'hello') ? 'true' : 'false').PHP_EOL; //true
echo ((0 == '1hello') ? 'true' : 'false').PHP_EOL; //false
echo (('0' == '0e0') ? 'true' : 'false').PHP_EOL; //true
echo (('0' == '0e0e') ? 'true' : 'false').PHP_EOL; //false
echo (('0' == '0ee') ? 'true' : 'false').PHP_EOL; //false
echo ((0 == '0x0') ? 'true' : 'false').PHP_EOL; //true
echo ((0 == '0x0x') ? 'true' : 'false').PHP_EOL; //true
echo ((0 == '0x0b') ? 'true' : 'false').PHP_EOL; //false
?>

<?php echo ((0 == 'hello') ? 'true' : 'false').PHP_EOL; //true echo ((0 == '1hello') ? 'true' : 'false').PHP_EOL; //false echo (('0' == '0e0') ? 'true' : 'false').PHP_EOL; //true echo (('0' == '0e0e') ? 'true' : 'false').PHP_EOL; //false echo (('0' == '0ee') ? 'true' : 'false').PHP_EOL; //false echo ((0 == '0x0') ? 'true' : 'false').PHP_EOL; //true echo ((0 == '0x0x') ? 'true' : 'false').PHP_EOL; //true echo ((0 == '0x0b') ? 'true' : 'false').PHP_EOL; //false ?>

Whoa, we don’t want any of these to return true, what’s a developer to do?

Strict comparisons with ===

<?php
echo ((0 === 'hello') ? 'true' : 'false').PHP_EOL; //false
echo ((0 === '1hello') ? 'true' : 'false').PHP_EOL; //false
echo (('0' === '0e0') ? 'true' : 'false').PHP_EOL; //false
echo (('0' === '0e0e') ? 'true' : 'false').PHP_EOL; //false
echo (('0' === '0ee') ? 'true' : 'false').PHP_EOL; //false
echo ((0 === '0x0') ? 'true' : 'false').PHP_EOL; //false
echo ((0 === '0x0x') ? 'true' : 'false').PHP_EOL; //false
echo ((0 === '0x0b') ? 'true' : 'false').PHP_EOL; //false
?>

<?php echo ((0 === 'hello') ? 'true' : 'false').PHP_EOL; //false echo ((0 === '1hello') ? 'true' : 'false').PHP_EOL; //false echo (('0' === '0e0') ? 'true' : 'false').PHP_EOL; //false echo (('0' === '0e0e') ? 'true' : 'false').PHP_EOL; //false echo (('0' === '0ee') ? 'true' : 'false').PHP_EOL; //false echo ((0 === '0x0') ? 'true' : 'false').PHP_EOL; //false echo ((0 === '0x0x') ? 'true' : 'false').PHP_EOL; //false echo ((0 === '0x0b') ? 'true' : 'false').PHP_EOL; //false ?>

Much better.

Learn more at http://php.net/manual/en/types.comparisons.php

Filed Under: Quick Tips Tagged With: comparison, php, type

Connect

  • Facebook
  • GitHub
  • RSS
  • Twitter
  • YouTube

Recent Posts

  • Extremely Useful Applications for Web Development and IT Tasks
  • Installing BookStack Wiki on cPanel Shared Hosting
  • Media (MIME) Type Reference List

Tags

automatic base64 benchmark cache counter css deflate email font gzip htaccess html image inarray increment inline images in_array javascript jquery link list magento mailto menu metadot mysql number obfuscation opencart operating system order php random redirect rewriterule slashes software timestamp ubuntu unix upgrade url windows windows 7 wordpress

Blogroll

  • CodeIgniter
  • Fusion Forward
  • jQuery
  • Nettuts+
  • Smashing Magazine

© 2021 WarpConduit Computing. All Rights Reserved.