PHP comparison operators have ==
as being equal and ===
as being identical.
This means that ==
has to change or convert the type to check if it is equal. An example for this is the code below returns “yes”
$a = 1; $b = '1'; if ($a == $b) { echo "yes"; } else { echo "no"; }
Because after type juggling (Int and string) they are equal values.
The following code will return “no”
$a = 1; $b = '1'; if ($a === $b) { echo "yes"; } else { echo "no"; }
As 1 being an integer is not the same as ‘1’ which is set as a string.
===
is faster to fail the condition. It must be noted that the actual speed gain is so minimal that you won’t even notice it, mere microseconds.
$a = true; $b = 'yes'; if ($a == $b) { echo "yes"; } else { echo "no"; }
The code above returns “yes” because variable b is set which means it is true, therefor equal to variable a.