• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Jaka jest praktyczna różnica pomiędzy operatorami == i === w języku PHP?

Object Storage Arubacloud
+4 głosów
6,273 wizyt
pytanie zadane 6 kwietnia 2015 w PHP przez Kriss97PL Użytkownik (650 p.)

No właśnie, w niektórych kodach widzi się taki operator: === Czy ktoś jest w stanie fajnie i łopatologicznie opisać jaka jest różnica pomiędzy tym:  

if (a == b)

a tym:

if (a === b)

Co daje nam === czego nie daje == musi istnieć jakaś różnica

3 odpowiedzi

+6 głosów
odpowiedź 6 kwietnia 2015 przez Kabotyn Mądrala (5,650 p.)
wybrane 9 kwietnia 2015 przez Mirosław Zelent
 
Najlepsza

== 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.

+3 głosów
odpowiedź 6 kwietnia 2015 przez krecik1334 Maniak (58,390 p.)
W php4 to robiło różnicę.

a == b zwróci true nawet gdy zmienne będą różnego typu

a === b zwróci true tylko gdy zmienne będą tego samego typu
+2 głosów
odpowiedź 6 kwietnia 2015 przez MatiiTv Gaduła (3,790 p.)

Po co tyle pisać, skoro można krótko i konkretnie?

 

"==" to operator równości, czyli zwraca prawdę, jeżeli wartości są sobie równe.

Natomiast operator identyczności ("===") zwraca prawdę, jeżeli wartości są sobie równe, a zmienne są tego samego typu.

 

Na przykład:

Zmienna "a" ma wartość 1 ($a = 1)

Zmienna "b" jest łańcuchem znaków, czyli "1" ($b = "1")

Jezeli porównasz te zmienne operatorem identyczności zwróci się fałsz, bo zmienne nie są tego samego typu. Jeżeli operatorem porównania zwróci się prawda, bo wartość zmiennych tu i tu jest równa 1, tylko w "b" jest to łańcuch znaków.

 

kod:

<?php

$a = 1
$b = "1"

if($a == $b){
    echo "wartosci sa sobie rowne";

}


if($a === $b){

    echo "wartosci sa sobie rowne i sa tego samego typu";

}
else {
   echo "wartosci nie sa sobie rowne lub nie sa tego samego typu";

}

?>

 

Podobne pytania

0 głosów
3 odpowiedzi 1,954 wizyt
+1 głos
1 odpowiedź 1,253 wizyt
+1 głos
1 odpowiedź 259 wizyt

92,623 zapytań

141,478 odpowiedzi

319,819 komentarzy

62,005 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...