Can the relational operator === (used for identical) be used interchangeably with the != operator" and get the same results? Or will I eventually run into issues later down the road when I do larger programs?
I know I will get the same results in the example below, will this always be true?
//example 1
<?php
$a = 1; //integer
$b = '1'; //string
if ($a === $b) {
echo 'Values and types are same';
}
else {
echo 'Values and types are not same';
}
?>
// example 2
<?php
$a = 1; //integer
$b = '1'; //string
if ($a != $b) {
echo 'Values and types are not same';
}
else {
echo 'Values and types are same';
}
?>
Short answer is, no, you can't interchange them because they check for different things. They are not equivalent operators.
You'll want to use !==
It basically means both values being compared must be of the same type.
When you use ==, the values being compared are typecast if needed.
As you know, === checks the types also.
When you use !=, the values are also typecast, whereas !== checks the values and type, strictly.
You're essentially asking whether !($a != $b)
will always be identical to $a === $b
. The simple answer is: no. !($a != $b)
can be boiled down to $a == $b
, which is obviously not the same as $a === $b
:
php > var_dump(!('0' != 0));
bool(true)
php > var_dump('0' === 0);
bool(false)
!==
is obviously the opposite of ===
, so !($a !== $b)
will always be identical to $a === $b
.