== porównuje wartości zmiennych, a === sprawdza też czy zmienne mają ten sam typ.
$a = 1; // zmienna integer (liczba)
$b = "1"; // zmienna typu string (ciąg znaków)
$a == $b // TRUE bo 1 to co do wartości jest "1"
$a === $b // FALSE bo 1 co do wartości to "1" ale 1 to liczba a "1" to string
W praktyce wykorzystuje się to często przy funkcjach które zwracają raz wartość liczbową a raz wartość boolean. Np. funkcja strpos(), która wyszukuje dany ciąg znaków w innym, jeżeli taki ciąg występuje to zwraca jego pozycję, jeżeli go nie ma to zwraca FALSE.
Należy pamiętać że dla porównania == gdy porównuje się wartość FALSE (boolean) z wartością 0 (liczba) to będzie zwracał prawdę więc jeżeli funkcja strpos() zwróci Ci wartość 0 to nie wiesz czy jest to zero, bo od zerowego elementu zaczyna się szukany tekst, czy nie znalazł danego ciągu znaków. I tu z pomocą przychodzi ===
$a = strpos("Jakis tekst", "DD");
if($a === FALSE) {
// tekstu "DD" nie znaleziono w "Jakis tekst"
print "Nie ma takiego tekstu!";
} else {
// tekst DD jest na pozycji $a
print "W tekscie \"Jakis tekst\" wyrazenie \"DD\" zaczyna się od pozycji: ".$a;
}
Mam nadzieję, że zrozumiale napisałem.