Jaka jest różnica pomiędzy operatorami: = i == i === w PHP?

W wielu językach programowania, między innymi w PHP możesz stosować operatory =, ==, oraz ===.
Często są one między sobą mylone, dlatego postanowiłem wyjaśnić Wam jaka jest różnica między nimi.

Operator = używany jest do przypisywania wartości do zmiennej. W poniższym przykładzie przypisujemy wartość 1 do zmiennej a.

<?php
$a=1;
echo $a;
?>

Wynik: 1

Spójrz na poniższy przykład. Wykorzystując operator = w instrukcji warunkowej if sprawdzamy, czy można przypisać wartość 1 do zmiennej $a. Jeżeli tak, to przypisujemy i wyświetlamy. W wyniku otrzymamy 1, mimo że wcześniej zdeklarowaliśmy wartość $a na 0.

<?php
$a=0;
if ($a=1)
{
    echo $a;
}
?>

Operator == służy do porównywania dwóch wartości bez względu na typ. Spójrzmy na poniższy kod.

<?php
$a=1;
$b='1';
if ($a==$b)
{
echo "Obie wartości są takie same";
}
else
{
echo "Wartości są różne";
}
?>

W wyniku otrzymamy komunikat: “Obie wartości są takie same“, gdyż w obu przypadkach wynoszą one 1 – mimo że wartość $a jest typu integer, a wartość $b typu string. Stosując operator == pomijamy sprawdzanie typu zmiennej.

Operator === służy do porównywania dwóch wartości oraz ich typu.

<?php
$a=1;
$b='1';
if ($a===$b)
{
echo "Obie wartości są takie same";
}
else
{
echo "Wartości są różne";
}
?>

Tym razem w wyniku działania otrzymamy komunikat: “Wartości są różne“, mimo iż obie zmienne mają przypisaną wartość 1. Dzieje się tak dlatego, że $a jest typu integer, zaś $b typu string. Operator === porównuje zatem w zmiennych ich wartości oraz typy.