Skip to content
Related Articles

Related Articles

Improve Article

Why is === faster than == in PHP ?

  • Last Updated : 25 Aug, 2021
Geek Week

The Comparison Operator == (Equality operator) and === (Identity Operator) are used to compare two values. They are also known as the loosely equal (==) operator and the strict identical (===) operator.
 

SymbolNameExampleOutput
==Equality$a == $bTRUE if $a is equal to $b after type juggling
===Identity$a === $bTRUE if $a is equal to $b, and both are of the same type

PHP Operators: There are lots of operators in PHP but == and === operator performs similar kind of task strictly or casually. 
 

  • If operands are of different type then == and === will produce different results.The speed of the operators will be different in this case as == will perform type conversion and then do the comparison.
  • If operands are of same type then both == and === will produce same results. The speed of both operators is almost identical in this case as no type conversion is performed by any of the operators.

Equality operator == converts the data type temporarily to see if its value is equal to the other operand, whereas === (the identity operator) doesn’t need to do any type casting and thus less work is done, which makes it faster than ==.
Example 1: 
 

php




<?php
 
// 0 == 0 -> true as first type
// conversion is done and then
// checked if it is equal or not
var_dump(0 == "a");
 
// 1 == 1 -> true
var_dump("1" == "01");
 
// 10 == 10 -> true
var_dump("10" == "1e1");
 
// 100 == 100 -> true
var_dump(100 == "1e2");
 
// 0 === "a" -> false in this type
// conversion is not done only
// checking is there if they are
// equal or not
var_dump(0 === "a");
 
// "1" === "01" -> false
var_dump("1" === "01");
 
// "10" === "1e1" -> false
var_dump("10" === "1e1");
 
// 100 == "1e2" -> false
var_dump(100 === "1e2");
 
switch ("a") {
case 0:
    echo "In first case";
    break;
     
// Never reached because "a" is already
// matched with 0 as in switch == is used
case "a"
    echo "In second case";
    break;
}
?>

Output: 
 

bool(true)
bool(true)
bool(true)
bool(true)
bool(false)
bool(false)
bool(false)
bool(false)
In first case

Example 2: 
 

php




<?php
 
// TRUE - same as (bool)1 == TRUE
var_dump(1 == TRUE);
 
// TRUE - same as (bool)0 == FALSE
var_dump(0 == FALSE);
 
// FALSE - not same 1 and TRUE as
// 1 is integer and TRUE is boolean
var_dump(1 === TRUE);
 
// FALSE - not same 0 and FALSE as 0
// is integer and FALSE is boolean
var_dump(0 === FALSE);
?>

Output: 
 

bool(true)
bool(true)
bool(false)
bool(false)

Note: The === operator performs a ‘typesafe comparison’, it will only return true only if both operands have the same type and value whereas if only value is to be compared == is used.
 




My Personal Notes arrow_drop_up
Recommended Articles
Page :