Jaka jest różnica między =
, ==
i ===
?
Myślę, że użycie jednego znaku równości służy do zadeklarowania zmiennej, podczas gdy dwa znaki równości służą do warunku porównania, a na koniec trzy znaki równości służą do porównywania wartości zadeklarowanych zmiennych.
php
comparison
operators
Truskawka
źródło
źródło
=
w javascript. Dotyczy to nie tylko PHP, ale także innych języków.Odpowiedzi:
Musisz
=
się operator przypisania ,==
z „równe” operator porównania i===
ten „identyczne” operator porównania .Aby uzyskać więcej informacji na temat potrzeby stosowania
==
i===
sytuacji, w których należy ich używać, zapoznaj się z dokumentacją .źródło
===
z obiektami informuje, czy są to ten sam obiekt, a nie, czy mają taką samą zawartość.=
jest operatorem przypisania==
jest operatorem porównania (sprawdza, czy dwie zmienne mają równe wartości)===
jest identycznym operatorem porównania (sprawdza, czy dwie zmienne mają równe wartości i są tego samego typu).źródło
= operator przypisania
== sprawdza, czy dwie zmienne mają tę samą wartość
=== sprawdza, czy dwie zmienne mają tę samą wartość ORAZ czy ich typy są takie same
źródło
Operator = przypisuje wartość zmiennej $ sześć = 6; wartość 6 jest przypisana zmiennej $ sześć
== operator sprawdza, czy wartości obu zmiennych są równe i najczęściej używane w warunkach takich jak instrukcje if
=== operator podobny do == (sprawdź, czy wartość jest równa), a także sprawdź, czy oba mają ten sam typ danych
// tutaj $ a jest typu int, podczas gdy $ b jest typu string. Więc tutaj wyjście
źródło
Dla zaawansowanych użytkowników PHP, znając różnicę między
==
i===
i zadając sobie pytanie „czy jest szybsze porównanie z==
lub z,===
gdy jestem pewien, że oba operandy są tego samego typu?”Krótka i ogólna odpowiedź brzmi: w takich przypadkach nie ma wzrostu wydajności
===
, więc prawdopodobnie powinieneś użyć==
.Osoby zainteresowane samodzielnym testowaniem porównawczym mogą skorzystać z następującego kodu, który napisałem ad-hoc i wypróbować różne wartości dla
$a
i$b
:UWAGA: Porównanie jest ważne tylko wtedy, gdy każda „PIERWSZA PRÓBA” jest bardzo bliska jej „DRUGIEJ PRÓBY”. Jeśli są znacząco różne, oznacza to, że procesor był zajęty robieniem czegoś innego podczas wykonywania porównań, więc wyniki są niewiarygodne i benchmark należy uruchomić ponownie.
źródło
==
lub===
jako przyczyna problemu z wydajnością. IMO: Lepiej jest być ścisłym (===
), chyba że wyraźnie chcesz luźno (==
) w porównaniach. Liczba dziwnych skrajnych przypadków, tj."5 is not a number" == 5
Może prowadzić do zwariowanych błędów.===
nigdy nie cierpi na ten problem.===
ze względu na wydajność, to się mylą. Tak więc programiści mają swobodę wyboru===
lub==
opierają się na logicznych powodach, ale nie na wydajności: są różne przypadki, w których preferują jeden lub drugi, a wydajność nie może być w ogóle brana pod uwagę.