2009-12-04 31 views
6

Ciągle widzę odmiany to:php nie jest równa i nie jest równa, równa

Nie równa !=

nie równe, równe

!==

Który z nich jest standard czy mają różne znaczenia?

Domyślam ten ostatni również sprawdza wartość i nazwę, jeśli jest to ciąg znaków, natomiast dawny może po prostu sprawdzić tylko wartość ...

Odpowiedz

19

== i != równość sprawdzić pod względem wartości, w PHP można porównać różne typy, w którym pewne wartości uważane są za równoważne.

Na przykład "" == 0 ocenia na true, mimo że jeden jest ciągiem, a drugi jest liczbą całkowitą.

=== i !== sprawdź typ typu, a także wartość.

Tak, "" === 0 oceni na false.


Edit: Aby dodać kolejny przykład tego, jak ten "typ-żonglerka" może złapać cię, spróbuj tego:

var_dump("123abc" == 123); 

Daje bool(true)!

+0

Dziękuję wam, za szybką reakcję, więc używając! == lub po prostu == dodajecie czek na typ, a także wartość, dziękuję. – Newb

+2

PHP umożliwia dowolne przekształcanie wartości z jednego typu na inny. Jeśli konwertujesz ciąg "456" na liczbę, zostanie przekonwertowany do 456. Bardzo wygodny. Operator porównania PHP == sprawdza tylko wartość. Zatem "456" == 456'.Teraz "" (pusty łańcuch) będzie równy 0, FALSE i NULL. Ale czasami tego nie chcesz. Aby sprawdzić, czy coś jest FALSE zamiast tylko 0, możesz użyć 'var === FALSE' – nash

+0

Operator porównania, tylko sprawdza wartości (==), dzięki – Newb

5

!= nie równe pod względem wartości

!== nie równy przez wartość i rodzaju

6

Drugi to typ-strict.

"1" != 1; // false 
"1" !== 1; // true because the first is a string, the second is a number 
1

na przykład:

"2" == 2 -> true 

"2" === 2 -> false 


"2" !== 2 -> true 

"2" != 2 -> false 

jest to również ważne podczas korzystania z pewnych funkcji, które mogą powrócić 0 lub false

np strpos: chcesz, aby zawsze sprawdzić typy zbyt tam, nie tylko wartości. ponieważ 0 == false ale 0 !== false.

od strpos może zwrócić 0, jeśli ciąg znaków znajduje się na pierwszej pozycji. ale to nie to samo, co false, co oznacza, że ​​ciąg nie został znaleziony.

+0

"2" to ciąg znaków, więc przy używaniu == wykonujemy obydwie kontrole typu i wartości, więc wynik jest prawdziwy dla pierwszego przypadku. Jednak dla drugiego przypadku === czyni to surowszym (typ i wartość muszą pasować); dlatego uważamy, że ciąg "2" nie będzie równy wartości 2, interesujący. – Newb

+0

Właśnie dostałem oświecenie od Bena Jamesa, == sprawdza tylko wartości. – Newb