W PHP nie ma ściśle identycznych operatorów porównania ( >==
lub <==
) (przynajmniej od PHP 5.6.14) , ale istnieje kilka sposobów na wymuszenie ścisłego sprawdzenia typu przed sprawdzeniem Większy / Dolny:
- Zaznacz oba typy zmiennych za pomocą
if (gettype($a) === gettype($b))
- Wymuś potrzebny typ rzutowania, np.
if ((string)$a === (string)$b)
- Wymuś żonglowanie typami, np.
if (($a . '') === ($b . ''))
Zwróć uwagę, że:
- Precyzja zmiennoprzecinkowa jest ograniczona
INF
i NAN
są typu float
underieee754
- Pewna nieskończoność równa się innej Infinity (od PHP 5.4)
- Notacja naukowa
e
jest zawsze typu float
i nigdy, integer
nawet jeśli liczba jest mała
- Przechodzące liczby całkowite
PHP_INT_MAX
są automatycznie konwertowane nafloat
- Przepływa przez granice systemu, uzyskując
INF
wartość
- Niezdefiniowane zmienne są typu i wartości
NULL
- Liczby całkowite poprzedzone przez
0
są konwertowane z ósemkowego na dziesiętny (zgodnie z konwencją)
- Konwersja ciągów zawierających liczbę całkowitą z początkiem
0
na liczbę całkowitą usuwa początkowe0
Lista egzotycznych porównań:
Bardzo dziwny:
$ a VS. $ b $ a> $ b $ a <$ b $ a <= $ b $ a> = $ b $ a == $ b $ a === $ b
float (NAN) float (-INF) false false false false false false false
float (NAN) float (0) false false false false false false
float (NAN) float (1) false false false false false false
float (NAN) float (INF) false false false false false false
float (NAN) float (NAN) false false false false false false
float (NAN) int (-1) false false false false false false
float (NAN) int (0) false false false false false false
float (NAN) int (1) false false false false false false
Równe, ale nie identyczne:
$ a VS. $ b $ a> $ b $ a <$ b $ a <= $ b $ a> = $ b $ a == $ b $ a === $ b
NULL (NULL) array () false false true true true true false
NULL (NULL) bool (false) false false true true true true false
NULL (NULL) float (0) false false true true true true false
NULL (NULL) int (0) false false true true true true false
NULL (NULL) str ('') false false true true true false
array () bool (false) false false true true true true false
bool (false) float (0) false false true true true true false
bool (false) int (0) false false true true true true false
str ('') bool (false) false false true true true true false
bool (false) str ('0') false false true true true true false
float (-INF) bool (prawda) fałsz fałsz prawda prawda prawda prawda fałsz
bool (true) float (1) false false true true true true false
float (INF) bool (true) false false true true true true false
float (NAN) bool (true) false false true true true true false
bool (true) int (-1) false false true true true true true false
bool (true) int (1) false false true true true true true false
bool (true) str ("\ 0") false false true true true true false
bool (true) str ('+') false false true true true true false
bool (true) str ('-') false false true true true true false
bool (true) str ('01 ') false false true true true true false
bool (true) str ('1') false false true true true true false
bool (true) str ('false') false false true true true true false
str ('text') bool (true) false false true true true true false
str ('true') bool (true) false false true true true true false
int (0) float (0) false false true true true true false
str ("\ 0") float (0) false false true true true true false
str ('') float (0) false false true true true true false
str ('+') float (0) false false true true true true false
str ('-') float (0) false false true true true true false
str ('0') float (0) false false true true true true false
str ('false') float (0) false false true true true true true false
str ('text') float (0) false false true true true true false
str ('prawda') float (0) fałsz fałsz prawda prawda prawda prawda fałsz
int (1) float (1) false false true true true true false
float (1) str ('01 ') false false true true true true false
float (1) str ('1') false false true true true true false
str ("\ 0") int (0) false false true true true true false
str ('') int (0) false false true true true true false
str ('+') int (0) false false true true true true false
str ('-') int (0) false false true true true true false
int (0) str ('0') false false true true true true false
str ('false') int (0) false false true true true true false
str ('tekst') int (0) false false true true true true false
str ('prawda') int (0) fałsz fałsz prawda prawda prawda prawda fałsz
int (1) str ('01 ') false false true true true true false
int (1) str ('1') false false true true true true false
str ('1') str ('01 ') false false true true true true false
Niższy i większy w tym samym czasie?
$ a VS. $ b $ a> $ b $ a <$ b $ a <= $ b $ a> = $ b $ a == $ b $ a === $ b
float (NAN) str ("\ 0") prawda prawda prawda prawda fałsz fałsz
float (NAN) str ('') prawda prawda prawda prawda fałsz fałsz
float (NAN) str ('+') prawda prawda prawda prawda fałsz fałsz
float (NAN) str ('-') prawda prawda prawda prawda fałsz fałsz
float (NAN) str ('0') prawda prawda prawda prawda fałsz fałsz
float (NAN) str ('01 ') prawda prawda prawda prawda fałsz fałsz
float (NAN) str ('1') prawda prawda prawda prawda fałsz fałsz
float (NAN) str ('false') true true true true true false false
float (NAN) str ('tekst') prawda prawda prawda prawda fałsz fałsz
float (NAN) str ('true') true true prawda prawda prawda fałsz fałsz
Równe I identyczne:
$ a VS. $ b $ a> $ b $ a <$ b $ a <= $ b $ a> = $ b $ a == $ b $ a === $ b
NULL (NULL) NULL (NULL) false false true true true true
float (-INF) float (-INF) fałsz fałsz prawda prawda prawda prawda prawda
float (INF) float (INF) false false true true true true true
Mniejsze lub większe:
$ a VS. $ b $ a> $ b $ a <$ b $ a <= $ b $ a> = $ b $ a == $ b $ a === $ b
NULL (NULL) bool (true) false true true true false false false
float (-INF) NULL (NULL) prawda fałsz fałsz prawda fałsz fałsz
NULL (NULL) float (1) false true true false false false
float (INF) NULL (NULL) prawda fałsz fałsz prawda fałsz fałsz
float (NAN) NULL (NULL) prawda fałsz fałsz prawda fałsz fałsz
NULL (NULL) int (-1) false true true false false false
NULL (NULL) int (1) false true true false false false
NULL (NULL) str ("\ 0") false true true false false false
NULL (NULL) str ('+') false true true false false false
NULL (NULL) str ('-') false true true false false false
NULL (NULL) str ('0') false true true false false false
NULL (NULL) str ('01 ') false true true false false false
NULL (NULL) str ('1') false true true false false false
NULL (NULL) str ('false') false true true true false false false
NULL (NULL) str ('tekst') false true true false false false
NULL (NULL) str ('true') false true true true false false false
array () bool (true) false true true false false false false
float (-INF) array () false true true true false false false
array () float (0) prawda fałsz fałsz prawda fałsz fałsz
array () float (1) prawda fałsz fałsz prawda fałsz fałsz
float (INF) array () false true true true false false false
float (NAN) array () false true true false false false false
array () int (-1) prawda fałsz fałsz prawda fałsz fałsz
array () int (0) prawda fałsz fałsz prawda fałsz fałsz
array () int (1) prawda fałsz fałsz prawda fałsz fałsz
array () str ("\ 0") prawda fałsz fałsz prawda fałsz fałsz
str ('') array () false true true false false false
array () str ('+') true false false true false false
array () str ('-') true false false true false false
array () str ('0') prawda fałsz fałsz prawda fałsz fałsz
array () str ('01 ') true false false true true false false
array () str ('1') true false false true false false
array () str ('false') true false false true true false false
array () str ('tekst') prawda fałsz fałsz prawda fałsz fałsz
array () str ('true') true false false true false false
bool (prawda) bool (fałsz) prawda fałsz fałsz prawda fałsz fałsz fałsz
float (-INF) bool (false) true false false true true false false
float (1) bool (false) true false false true false false
float (INF) bool (false) true false false true false false
float (NAN) bool (false) true false false true true false false
bool (false) int (-1) false true true false false false false
int (1) bool (false) true false false true false false
bool (false) str ("\ 0") false true true false false false
bool (false) str ('+') false true true false false false false
bool (false) str ('-') false true true false false false false
bool (false) str ('01 ') false true true false false false false
str ('1') bool (false) true false false true true false false
bool (false) str ('false') false true true false false false false
str ('text') bool (false) true false false true true false false
str ('true') bool (false) true false false true true false false
bool (prawda) float (0) prawda fałsz fałsz prawda fałsz fałsz
bool (prawda) int (0) prawda fałsz fałsz prawda fałsz fałsz
str (``) bool (true) false true true true false false false
bool (true) str ('0') true false false true false false
float (-INF) float (0) fałsz prawda prawda fałsz fałsz fałsz
float (-INF) float (1) fałsz prawda prawda fałsz fałsz fałsz
float (INF) float (-INF) prawda fałsz fałsz prawda fałsz fałsz
float (-INF) int (-1) false true true false false false false
float (-INF) int (0) false true true false false false false
float (-INF) int (1) false true true false false false false
float (-INF) str ("\ 0") false true true false false false
float (-INF) str ('') false true true false false false false
float (-INF) str ('+') false true true false false false
float (-INF) str ('-') false true true false false false
float (-INF) str ('0') false true true false false false
float (-INF) str ('01 ') false true true false false false
float (-INF) str ('1') false true true false false false
float (-INF) str ('false') false true true true false false false
float (-INF) str ('tekst') false true true false false false
float (-INF) str ('true') false true true true false false false
float (1) float (0) prawda fałsz fałsz prawda fałsz fałsz
float (INF) float (0) prawda fałsz fałsz prawda fałsz fałsz
float (0) int (-1) prawda fałsz fałsz prawda fałsz fałsz
int (1) float (0) prawda fałsz fałsz prawda fałsz fałsz
float (0) str ('01 ') false true true false false false false
str ('1') float (0) prawda fałsz fałsz prawda fałsz fałsz
float (INF) float (1) prawda fałsz fałsz prawda fałsz fałsz
float (1) int (-1) prawda fałsz fałsz prawda fałsz fałsz
float (1) int (0) prawda fałsz fałsz prawda fałsz fałsz
float (1) str ("\ 0") prawda fałsz fałsz prawda fałsz fałsz
str ('') float (1) false true true false false false
float (1) str ('+') true false false true false false
float (1) str ('-') prawda fałsz fałsz prawda fałsz fałsz
float (1) str ('0') prawda fałsz fałsz prawda fałsz fałsz
float (1) str ('false') true false false true false false
str ('tekst') float (1) false true true false false false
str ('true') float (1) false true true false false false false
float (INF) int (-1) prawda fałsz fałsz prawda fałsz fałsz
float (INF) int (0) prawda fałsz fałsz prawda fałsz fałsz
float (INF) int (1) prawda fałsz fałsz prawda fałsz fałsz
float (INF) str ("\ 0") prawda fałsz fałsz prawda fałsz fałsz
float (INF) str ('') prawda fałsz fałsz prawda fałsz fałsz
float (INF) str ('+') prawda fałsz fałsz prawda fałsz fałsz
float (INF) str ('-') prawda fałsz fałsz prawda fałsz fałsz
float (INF) str ('0') prawda fałsz fałsz prawda fałsz fałsz
float (INF) str ('01 ') prawda fałsz fałsz prawda fałsz fałsz
float (INF) str ('1') prawda fałsz fałsz prawda fałsz fałsz
float (INF) str ('false') true false false true false false
float (INF) str ('tekst') prawda fałsz fałsz prawda fałsz fałsz
float (INF) str ('true') true false false true false false
int (0) int (-1) prawda fałsz fałsz prawda fałsz fałsz
int (1) int (-1) prawda fałsz fałsz prawda fałsz fałsz
str ("\ 0") int (-1) prawda fałsz fałsz prawda fałsz fałsz
str ('') int (-1) prawda fałsz fałsz prawda fałsz fałsz
str ('+') int (-1) prawda fałsz fałsz prawda fałsz fałsz
str ('-') int (-1) prawda fałsz fałsz prawda fałsz fałsz
str ('0') int (-1) prawda fałsz fałsz prawda fałsz fałsz
int (-1) str ('01 ') false true true false false false false
str ('1') int (-1) prawda fałsz fałsz prawda fałsz fałsz
str ('false') int (-1) true false false true true false false
str ('tekst') int (-1) prawda fałsz fałsz prawda fałsz fałsz
str ('prawda') int (-1) prawda fałsz fałsz prawda fałsz fałsz
int (1) int (0) prawda fałsz fałsz prawda fałsz fałsz
int (0) str ('01 ') false true true false false false false
str ('1') int (0) prawda fałsz fałsz prawda fałsz fałsz
int (1) str ("\ 0") prawda fałsz fałsz prawda fałsz fałsz
str ('') int (1) false true true false false false false
int (1) str ('+') true false false true false false
int (1) str ('-') true false false true false false
int (1) str ('0') prawda fałsz fałsz prawda fałsz fałsz
int (1) str ('false') true false false true false false
str ('tekst') int (1) false true true false false false
str ('true') int (1) false true true false false false false
str ('') str ("\ 0") false true true false false false
str ('+') str ("\ 0") prawda fałsz fałsz prawda fałsz fałsz
str ('-') str ("\ 0") prawda fałsz fałsz prawda fałsz fałsz
str ("\ 0") str ('0') false true true false false false
str ("\ 0") str ('01 ') false true true false false false
str ('1') str ("\ 0") prawda fałsz fałsz prawda fałsz fałsz
str ('false') str ("\ 0") true false false true false false
str ('tekst') str ("\ 0") prawda fałsz fałsz prawda fałsz fałsz
str ('prawda') str ("\ 0") prawda fałsz fałsz prawda fałsz fałsz
str ('') str ('+') false true true false false false
str ('') str ('-') false true true false false false
str ('') str ('0') false true true false false false false
str ('') str ('01 ') false true true false false false false
str ('') str ('1') false true true false false false false
str ('') str ('false') false true true false false false false
str ('') str ('tekst') false true true false false false
str ('') str ('true') false true true false false false false
str ('-') str ('+') prawda fałsz fałsz prawda fałsz fałsz
str ('+') str ('0') false true true false false false
str ('+') str ('01 ') false true true false false false
str ('1') str ('+') prawda fałsz fałsz prawda fałsz fałsz
str ('false') str ('+') true false false true false false
str ('tekst') str ('+') prawda fałsz fałsz prawda fałsz fałsz
str ('true') str ('+') true false false true false false
str ('-') str ('0') false true true false false false
str ('-') str ('01 ') false true true false false false
str ('1') str ('-') prawda fałsz fałsz prawda fałsz fałsz
str ('false') str ('-') true false false true false false
str ('tekst') str ('-') prawda fałsz fałsz prawda fałsz fałsz
str ('prawda') str ('-') prawda fałsz fałsz prawda fałsz fałsz
str ('0') str ('01 ') false true true false false false
str ('1') str ('0') prawda fałsz fałsz prawda fałsz fałsz
str ('false') str ('0') true false false true false false
str ('tekst') str ('0') prawda fałsz fałsz prawda fałsz fałsz
str ('prawda') str ('0') prawda fałsz fałsz prawda fałsz fałsz
str ('false') str ('01 ') true false false true false false
str ('text') str ('01 ') true false false true false false
str ('prawda') str ('01 ') prawda fałsz fałsz prawda fałsz fałsz fałsz
str ('1') str ('false') false true true true false false false
str ('tekst') str ('1') prawda fałsz fałsz prawda fałsz fałsz
str ('prawda') str ('1') prawda fałsz fałsz prawda fałsz fałsz
str ('text') str ('false') true false false true false false
str ('prawda') str ('fałsz') prawda fałsz fałsz prawda fałsz fałsz
str ('prawda') str ('tekst') prawda fałsz fałsz prawda fałsz fałsz
$a > $b > $c
Zagadka, gdy: $a
nie jest większe niż $c
.
A <C: float (NAN)> str ('a')> str ('')
A <C: float (NAN)> str ('a')> str ('1')
A <C: float (NAN)> str ('a')> str ('A')
A <C: float (NAN)> str ('a')> str ('0')
A <C: float (NAN)> str ('1')> str ('')
A <C: float (NAN)> str ('1')> str ('0')
A <C: float (NAN)> str ('A')> str ('')
A <C: float (NAN)> str ('A')> str ('1')
A <C: float (NAN)> str ('A')> str ('0')
A <C: float (NAN)> str ('0')> str ('')
A <C: str ('')> float (NAN)> str ('a')
A <C: str ('')> float (NAN)> str ('1')
A <C: str ('')> float (NAN)> str ('A')
A <C: str ('')> float (NAN)> str ('0')
A <C: str ('a')> str ('')> float (NAN)
A <C: str ('a')> str ('1')> float (NAN)
A <C: str ('a')> str ('A')> float (NAN)
A <C: str ('a')> str ('0')> float (NAN)
A <C: str ('0')> str ('')> float (NAN)
A == C: bool (true)> str ('')> float (NAN)
A == C: bool (true)> str ('')> float (-INF)
A == C: bool (true)> str ('')> int (-1)
A == C: bool (true)> str ('')> float (-1)
A == C: bool (true)> array ()> float (NAN)
A == C: bool (true)> array ()> float (INF)
A == C: bool (true)> array ()> float (-INF)
A == C: bool (true)> array ()> str ('a')
A == C: bool (true)> array ()> int (1)
A == C: bool (true)> array ()> float (1)
A == C: bool (true)> array ()> str ('1')
A == C: bool (true)> array ()> str ('A')
A == C: bool (true)> array ()> int (-1)
A == C: bool (true)> array ()> float (-1)
A == C: bool (true)> int (0)> float (-INF)
A == C: bool (true)> int (0)> int (-1)
A == C: bool (true)> int (0)> float (-1)
A == C: bool (true)> str ('0')> float (NAN)
A == C: bool (true)> str ('0')> float (-INF)
A == C: bool (true)> str ('0')> int (-1)
A == C: bool (true)> str ('0')> float (-1)
A == C: bool (true)> float (0)> float (-INF)
A == C: bool (true)> float (0)> int (-1)
A == C: bool (true)> float (0)> float (-1)
A == C: int (1)> str ('a')> str ('1')
A == C: int (1)> str ('A')> str ('1')
A == C: float (1)> str ('a')> str ('1')
A == C: float (1)> str ('A')> str ('1')
A == C: str ('a')> str ('1')> int (0)
A == C: str ('a')> str ('1')> float (0)
A == C: str ('')> float (-INF)> NULL (NULL)
A == C: str ('')> float (-INF)> bool (false)
A == C: str ('')> int (-1)> NULL (NULL)
A == C: str ('')> int (-1)> bool (false)
A == C: str ('')> float (-1)> NULL (NULL)
A == C: str ('')> float (-1)> bool (false)
A == C: array ()> float (NAN)> NULL (NULL)
A == C: array ()> float (NAN)> bool (false)
A == C: array ()> float (INF)> NULL (NULL)
A == C: array ()> float (INF)> bool (false)
A == C: array ()> float (-INF)> NULL (NULL)
A == C: array ()> float (-INF)> bool (false)
A == C: array ()> str ('a')> NULL (NULL)
A == C: array ()> str ('a')> bool (false)
A == C: array ()> int (1)> NULL (NULL)
A == C: array ()> int (1)> bool (false)
A == C: array ()> float (1)> NULL (NULL)
A == C: array ()> float (1)> bool (false)
A == C: array ()> str ('1')> NULL (NULL)
A == C: array ()> str ('1')> bool (false)
A == C: array ()> str ('A')> NULL (NULL)
A == C: array ()> str ('A')> bool (false)
A == C: array ()> str ('0')> NULL (NULL)
A == C: array ()> int (-1)> NULL (NULL)
A == C: array ()> int (-1)> bool (false)
A == C: array ()> float (-1)> NULL (NULL)
A == C: array ()> float (-1)> bool (false)
A == C: str ('')> float (NAN)> bool (false)
A == C: str ('')> float (NAN)> NULL (NULL)
A == C: str ('A')> str ('1')> int (0)
A == C: str ('A')> str ('1')> float (0)
A == C: int (0)> float (-INF)> NULL (NULL)
A == C: int (0)> float (-INF)> bool (false)
A == C: int (0)> int (-1)> NULL (NULL)
A == C: int (0)> int (-1)> bool (false)
A == C: int (0)> float (-1)> NULL (NULL)
A == C: int (0)> float (-1)> bool (false)
A == C: str ('0')> float (NAN)> bool (false)
A == C: str ('0')> float (-INF)> bool (false)
A == C: str ('0')> int (-1)> bool (false)
A == C: str ('0')> float (-1)> bool (false)
A == C: float (0)> float (-INF)> NULL (NULL)
A == C: float (0)> float (-INF)> bool (false)
A == C: float (0)> int (-1)> NULL (NULL)
A == C: float (0)> int (-1)> bool (false)
A == C: float (0)> float (-1)> NULL (NULL)
A == C: float (0)> float (-1)> bool (false)
A === C: str ('0')> float (NAN)> str ('0')
A === C: str ('')> float (NAN)> str ('')
A === C: str ('a')> float (NAN)> str ('a')
A === C: str ('1')> float (NAN)> str ('1')
A === C: str ('A')> float (NAN)> str ('A')
Zabawne porównanie strun: „Dama” >
„Król” >
„Walet” >
„As”
Sprawdź również tabele porównawcze typów PHP obejmujące pary:
isset()
i is_null()
if()
i empty()
- boolean
==
vs.===
Sprawdź różnice między wersjami PHP dostępnymi pod adresem. http://3v4l.org/MAfDu .
($a > $b) !== ($b < $a)
?