DEV Community

loading...

PHP Tricky True False Examples

Waqar Ahmed
Most often use technologies like PHP, Laravel, JavaScript, SQL and Linux. Portsmouth university alumnus. Like a one-line, elegant algorithm.
Originally published at Medium ・2 min read

The result of a PHP True False statement might be different from what looks like a simple and logical result.

PHP Comparison Operators == VS ===

PHP with loosely == operator will not compare type, so numeric strings will be converted to numbers and compared numerically. Below are two examples: for more on PHP comparisons, check the PHP.net page.

var_dump(0 == "a"); // 0 == 0 -> true
var_dump(10 == "1e1"); // 10 == 10 -> true

PHP strict comparison === will not convert string to a numeral. It compares both: type and the value. So examples above, comparing two of the different types, will always be false.

var_dump("1" === "01"); // 0 == "a" -> false
var_dump("10" === "1e1"); // 10 == "1e1" -> false

StackOverflow user Nick has added nice detailed comparison tables of == and === operators with TRUE, FALSE, NULL, 0, 1, -1, ‘0’, ‘1’, ‘-1’.

PHP TRUE, FALSE

In PHP: an undeclared variable, empty array, “0”, 0 and empty string are false while -1 is true. Here are some more TRUE, FALSE examples.

PHP STRINGS

var_dump((bool) "");        // bool(false)
var_dump((bool) "0");       // bool(false)
var_dump((bool) "1");       // bool(true)
var_dump((bool) "alpha");   // bool(true)
Enter fullscreen mode Exit fullscreen mode

PHP INT, FLOAT

var_dump((bool) 1);           // bool(true)
var_dump((bool) -1);          // bool(true)
var_dump((bool) 2.3e5);       // bool(true)
var_dump((bool) -2);          // bool(true)
var_dump((bool) 0.0);         // bool(false)
var_dump((bool) -0.1);        // bool(true)
Enter fullscreen mode Exit fullscreen mode

PHP ARRAYS

var_dump((bool) array());    // bool(false)
var_dump((bool) array(5));   // bool(true)
Enter fullscreen mode Exit fullscreen mode

OTHERS

var_dump((bool) "false");   // bool(true)
var_dump((bool) NULL);      // bool(false)
Enter fullscreen mode Exit fullscreen mode

PHP Functions

Return values of some commonly used PHP core functions might break the conditional flow by returning NULL or int() integer values. For example stripos() can return 0 which will be interpreted as false in an IF conditional block.

$text = 'abc xyz';
$pos = strpos($text, 'a');
var_dump($pos);  
//result: int(0) 
Enter fullscreen mode Exit fullscreen mode

This code will return true with the output of string position int(0). This return value zero evaluates to the false.

if (!strpos($text, 'a')) {echo "'a' not found in '$text'";}
//result: 'a' not found in 'abc xyz'
Enter fullscreen mode Exit fullscreen mode

Above code will detect “a” but if block will evaluate to false as a’s position is 0.
Instead, explicitly check if the value returned is not FLASE

if(strpos($text, 'a') === FALSE){echo "'a' not found in '$text'";}
Enter fullscreen mode Exit fullscreen mode

If you would like to add something or have a comment, please share.

Discussion (2)

Collapse
nicolus profile image
Nicolas Bailly

My favorite :

define('TRUE', false);
define('FALSE', true);
Enter fullscreen mode Exit fullscreen mode
Collapse
waqar profile image
Waqar Ahmed Author

:) from now on, I will always check constants before refactoring a code.