Tidak ada operator perbandingan identik yang ketat ( >==
atau <==
) di PHP (setidaknya dengan PHP 5.6.14) , tetapi ada beberapa cara untuk menerapkan pemeriksaan tipe yang ketat sebelum memeriksa Greater / Lower:
- Periksa kedua jenis variabel dengan
if (gettype($a) === gettype($b))
- Paksa cor-cast yang Anda butuhkan misalnya.
if ((string)$a === (string)$b)
- Paksa jenis-juggle yang Anda butuhkan misalnya.
if (($a . '') === ($b . ''))
Perhatikan bahwa:
- Presisi floating point terbatas
INF
dan NAN
tipe di float
bawahieee754
- Beberapa Infinity sama dengan beberapa Infinity lainnya (sejak PHP 5.4)
- Notasi ilmiah
e
selalu bertipe float
, dan tidak pernah integer
sekalipun jumlahnya kecil
- Bilangan bulat akan
PHP_INT_MAX
otomatis dikonversi kefloat
- Mengapung di atas batas sistem mendapatkan
INF
nilainya
- Variabel tak terdefinisi adalah tipe dan nilai
NULL
- Bilangan bulat yang diawali dengan
0
dikonversi dari oktal ke desimal (menurut konvensi)
- Konversi String yang berisi integer dengan awalan
0
ke integer strip di depan0
Daftar beberapa perbandingan eksotis:
Sangat aneh:
$ a VS. $ b $ a> $ b $ a <$ b $ a <= $ b $ a> = $ b $ a == $ b $ a === $ b
float (NAN) float (-INF) salah salah salah salah salah salah
float (NAN) float (0) salah salah salah salah salah salah
float (NAN) float (1) salah salah salah salah salah salah
float (NAN) float (INF) salah salah salah salah salah salah
float (NAN) float (NAN) salah salah salah salah salah salah
float (NAN) int (-1) salah salah salah salah salah salah
float (NAN) int (0) false false false false false false
float (NAN) int (1) false false false false false false
Sama tapi tidak identik:
$ a VS. $ b $ a> $ b $ a <$ b $ a <= $ b $ a> = $ b $ a == $ b $ a === $ b
NULL (NULL) array () false false true true true false
NULL (NULL) bool (false) salah salah benar benar benar salah
NULL (NULL) float (0) salah salah benar benar benar salah
NULL (NULL) int (0) false salah benar benar benar salah
NULL (NULL) str ('') salah salah benar benar benar salah
array () bool (false) salah salah benar benar benar salah
bool (salah) float (0) salah salah benar benar benar salah
bool (false) int (0) false salah benar benar benar salah
str ('') bool (salah) salah salah benar benar benar salah
bool (salah) str ('0') salah salah benar benar benar salah
float (-INF) bool (benar) salah salah benar benar benar salah
bool (benar) float (1) salah salah benar benar benar salah
float (INF) bool (benar) salah salah benar benar benar salah
float (NAN) bool (benar) salah salah benar benar benar salah
bool (benar) int (-1) salah salah benar benar benar salah
bool (benar) int (1) salah salah benar benar benar salah
bool (benar) str ("\ 0") salah salah benar benar benar salah
bool (benar) str ('+') salah salah benar benar benar salah
bool (benar) str ('-') salah salah benar benar benar salah
bool (benar) str ('01 ') salah salah benar benar benar salah
bool (benar) str ('1') salah salah benar benar benar salah
bool (benar) str ('salah') salah salah benar benar benar salah
str ('text') bool (true) false false true true true false
str ('benar') bool (benar) salah salah benar benar benar salah
int (0) float (0) salah salah benar benar benar benar salah
str ("\ 0") float (0) salah salah benar benar benar salah
str ('') float (0) salah salah benar benar benar salah
str ('+') float (0) salah salah benar benar benar salah
str ('-') float (0) salah salah benar benar benar salah
str ('0') float (0) salah salah benar benar benar salah
str ('false') float (0) false salah benar benar benar salah
str ('text') float (0) salah salah benar benar benar salah
str ('benar') float (0) salah salah benar benar benar salah
int (1) float (1) false salah benar benar benar benar salah
float (1) str ('01 ') false salah benar benar benar salah
float (1) str ('1') salah salah benar benar benar salah
str ("\ 0") int (0) salah salah benar benar benar salah
str ('') int (0) salah salah benar benar benar benar salah
str ('+') int (0) false false true true true false
str ('-') int (0) salah salah benar benar benar salah
int (0) str ('0') salah salah benar benar benar salah
str ('false') int (0) false false true true true false
str ('text') int (0) false false true true true false
str ('true') int (0) false false true true true false
int (1) str ('01 ') false false true true true false
int (1) str ('1') salah salah benar benar benar salah
str ('1') str ('01 ') false salah benar benar benar salah
Lebih Rendah dan Lebih Besar pada saat bersamaan?
$ a VS. $ b $ a> $ b $ a <$ b $ a <= $ b $ a> = $ b $ a == $ b $ a === $ b
float (NAN) str ("\ 0") benar benar benar benar salah salah
float (NAN) str ('') benar benar benar benar salah salah
float (NAN) str ('+') benar benar benar benar salah salah
float (NAN) str ('-') benar benar benar benar salah salah
float (NAN) str ('0') benar benar benar benar salah salah
float (NAN) str ('01 ') benar benar benar benar salah salah
float (NAN) str ('1') benar benar benar benar salah salah
float (NAN) str ('false') benar benar benar benar salah salah
float (NAN) str ('text') benar benar benar benar salah salah
float (NAN) str ('true') true true true true false false
Sama DAN identik:
$ a VS. $ b $ a> $ b $ a <$ b $ a <= $ b $ a> = $ b $ a == $ b $ a === $ b
NULL (NULL) NULL (NULL) salah salah benar benar benar benar
float (-INF) float (-INF) salah salah benar benar benar benar
float (INF) float (INF) salah salah benar benar benar benar
Lebih Rendah atau Lebih Besar:
$ a VS. $ b $ a> $ b $ a <$ b $ a <= $ b $ a> = $ b $ a == $ b $ a === $ b
NULL (NULL) bool (benar) salah benar benar salah salah salah
float (-INF) NULL (NULL) benar salah salah benar salah salah
NULL (NULL) float (1) salah benar benar salah salah salah
float (INF) NULL (NULL) benar salah salah benar salah salah
float (NAN) NULL (NULL) benar salah salah benar salah salah
NULL (NULL) int (-1) salah benar benar salah salah salah
NULL (NULL) int (1) false benar benar salah salah salah
NULL (NULL) str ("\ 0") salah benar benar salah salah salah
NULL (NULL) str ('+') salah benar benar salah salah salah
NULL (NULL) str ('-') salah benar benar salah salah salah
NULL (NULL) str ('0') salah benar benar salah salah salah
NULL (NULL) str ('01 ') false benar benar salah salah salah
NULL (NULL) str ('1') salah benar benar salah salah salah
NULL (NULL) str ('false') salah benar benar salah salah salah
NULL (NULL) str ('text') false benar benar salah salah salah
NULL (NULL) str ('true') salah benar benar salah salah salah
array () bool (benar) salah benar benar salah salah salah salah
float (-INF) array () salah benar benar salah salah salah salah
array () float (0) benar salah salah benar salah salah
array () float (1) benar salah salah benar salah salah
float (INF) array () salah benar benar salah salah salah salah
float (NAN) array () salah benar benar salah salah salah
array () int (-1) benar salah salah benar salah salah
array () int (0) benar salah salah benar salah salah
array () int (1) benar salah salah benar salah salah
array () str ("\ 0") benar salah salah benar salah salah
str ('') array () salah benar benar salah salah salah salah
array () str ('+') benar salah salah benar salah salah
array () str ('-') benar salah salah benar salah salah
array () str ('0') benar salah salah benar salah salah
array () str ('01 ') benar salah salah benar salah salah
array () str ('1') benar salah salah benar salah salah
array () str ('false') benar salah salah benar salah salah
array () str ('text') benar salah salah benar salah salah
array () str ('true') benar salah salah benar salah salah
bool (benar) bool (salah) benar salah salah benar salah salah
float (-INF) bool (false) benar salah salah benar salah salah
float (1) bool (false) benar salah salah benar salah salah
float (INF) bool (false) benar salah salah benar salah salah
float (NAN) bool (false) benar salah salah benar salah salah
bool (false) int (-1) false benar benar salah salah salah
int (1) bool (false) benar salah salah benar salah salah
bool (salah) str ("\ 0") salah benar benar salah salah salah
bool (salah) str ('+') salah benar benar salah salah salah
bool (salah) str ('-') salah benar benar salah salah salah
bool (false) str ('01 ') false benar benar salah salah salah
str ('1') bool (false) benar salah salah benar salah salah
bool (salah) str ('salah') salah benar benar salah salah salah
str ('text') bool (false) benar salah salah benar salah salah
str ('true') bool (false) benar salah salah benar salah salah
bool (benar) float (0) benar salah salah benar salah salah
bool (benar) int (0) benar salah salah benar salah salah
str ('') bool (benar) salah benar benar salah salah salah salah
bool (benar) str ('0') benar salah salah benar salah salah
float (-INF) float (0) salah benar benar salah salah salah
float (-INF) float (1) salah benar benar salah salah salah
float (INF) float (-INF) benar salah salah benar salah salah
float (-INF) int (-1) salah benar benar salah salah salah
float (-INF) int (0) salah benar benar salah salah salah salah
float (-INF) int (1) false true true false false false
float (-INF) str ("\ 0") salah benar benar salah salah salah
float (-INF) str ('') salah benar benar salah salah salah
float (-INF) str ('+') salah benar benar salah salah salah
float (-INF) str ('-') salah benar benar salah salah salah
float (-INF) str ('0') salah benar benar salah salah salah
float (-INF) str ('01 ') salah benar benar salah salah salah
float (-INF) str ('1') salah benar benar salah salah salah
float (-INF) str ('false') salah benar benar salah salah salah
float (-INF) str ('text') false benar benar salah salah salah
float (-INF) str ('true') false benar benar salah salah salah
float (1) float (0) benar salah salah benar salah salah
float (INF) float (0) benar salah salah benar salah salah
float (0) int (-1) benar salah salah benar salah salah
int (1) float (0) benar salah salah benar salah salah
float (0) str ('01 ') salah benar benar salah salah salah salah
str ('1') float (0) benar salah salah benar salah salah
float (INF) float (1) benar salah salah benar salah salah
float (1) int (-1) benar salah salah benar salah salah
float (1) int (0) benar salah salah benar salah salah
float (1) str ("\ 0") benar salah salah benar salah salah
str ('') float (1) salah benar benar salah salah salah
float (1) str ('+') benar salah salah benar salah salah
float (1) str ('-') benar salah salah benar salah salah
float (1) str ('0') benar salah salah benar salah salah
float (1) str ('false') benar salah salah benar salah salah
str ('text') float (1) salah benar benar salah salah salah
str ('benar') float (1) salah benar benar salah salah salah
float (INF) int (-1) benar salah salah benar salah salah
float (INF) int (0) benar salah salah benar salah salah
float (INF) int (1) benar salah salah benar salah salah
float (INF) str ("\ 0") benar salah salah benar salah salah
float (INF) str ('') benar salah salah benar salah salah
float (INF) str ('+') benar salah salah benar salah salah
float (INF) str ('-') benar salah salah benar salah salah
float (INF) str ('0') benar salah salah benar salah salah
float (INF) str ('01 ') benar salah salah benar salah salah
float (INF) str ('1') benar salah salah benar salah salah
float (INF) str ('false') benar salah salah benar salah salah
float (INF) str ('text') benar salah salah benar salah salah
float (INF) str ('true') benar salah salah benar salah salah
int (0) int (-1) benar salah salah benar salah salah
int (1) int (-1) benar salah salah benar salah salah
str ("\ 0") int (-1) benar salah salah benar salah salah
str ('') int (-1) benar salah salah benar salah salah
str ('+') int (-1) benar salah salah benar salah salah
str ('-') int (-1) benar salah salah benar salah salah
str ('0') int (-1) benar salah salah benar salah salah
int (-1) str ('01 ') false true true false false false
str ('1') int (-1) benar salah salah benar salah salah
str ('false') int (-1) true false false true false false
str ('text') int (-1) benar salah salah benar salah salah
str ('true') int (-1) true false false true false false
int (1) int (0) benar salah salah benar salah salah
int (0) str ('01 ') salah benar benar salah salah salah salah
str ('1') int (0) benar salah salah benar salah salah
int (1) str ("\ 0") benar salah salah benar salah salah
str ('') int (1) salah benar benar salah salah salah salah
int (1) str ('+') benar salah salah benar salah salah
int (1) str ('-') benar salah salah benar salah salah
int (1) str ('0') benar salah salah benar salah salah
int (1) str ('false') benar salah salah benar salah salah
str ('text') int (1) false benar benar salah salah salah
str ('benar') int (1) salah benar benar salah salah salah salah
str ('') str ("\ 0") salah benar benar salah salah salah
str ('+') str ("\ 0") benar salah salah benar salah salah
str ('-') str ("\ 0") benar salah salah benar salah salah
str ("\ 0") str ('0') salah benar benar salah salah salah
str ("\ 0") str ('01 ') salah benar benar salah salah salah
str ('1') str ("\ 0") benar salah salah benar salah salah
str ('false') str ("\ 0") benar salah salah benar salah salah
str ('text') str ("\ 0") benar salah salah benar salah salah
str ('true') str ("\ 0") benar salah salah benar salah salah
str ('') str ('+') salah benar benar salah salah salah
str ('') str ('-') salah benar benar salah salah salah
str ('') str ('0') salah benar benar salah salah salah
str ('') str ('01 ') salah benar benar salah salah salah
str ('') str ('1') salah benar benar salah salah salah
str ('') str ('false') salah benar benar salah salah salah
str ('') str ('text') salah benar benar salah salah salah
str ('') str ('true') false benar benar salah salah salah
str ('-') str ('+') benar salah salah benar salah salah
str ('+') str ('0') salah benar benar salah salah salah
str ('+') str ('01 ') salah benar benar salah salah salah
str ('1') str ('+') benar salah salah benar salah salah
str ('false') str ('+') true false false true false false
str ('text') str ('+') true false false true false false
str ('true') str ('+') true false false true false false
str ('-') str ('0') salah benar benar salah salah salah
str ('-') str ('01 ') salah benar benar salah salah salah
str ('1') str ('-') benar salah salah benar salah salah
str ('false') str ('-') benar salah salah benar salah salah
str ('text') str ('-') benar salah salah benar salah salah
str ('benar') str ('-') benar salah salah benar salah salah
str ('0') str ('01 ') salah benar benar salah salah salah
str ('1') str ('0') benar salah salah benar salah salah
str ('false') str ('0') true false false true false false
str ('text') str ('0') benar salah salah benar salah salah
str ('true') str ('0') true false false true false false
str ('false') str ('01 ') benar salah salah benar salah salah
str ('text') str ('01 ') benar salah salah benar salah salah
str ('true') str ('01 ') true false false true false false
str ('1') str ('false') salah benar benar salah salah salah
str ('text') str ('1') benar salah salah benar salah salah
str ('benar') str ('1') benar salah salah benar salah salah
str ('text') str ('false') benar salah salah benar salah salah
str ('true') str ('false') benar salah salah benar salah salah
str ('true') str ('text') benar salah salah benar salah salah
$a > $b > $c
Teka-teki ketika: $a
tidak lebih dari $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 (salah)
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')
Perbandingan senar menyenangkan: 'Queen' >
'King' >
'Jack' >
'Ace'
Lihat juga tabel perbandingan tipe PHP yang mencakup pasangan:
isset()
dan is_null()
if()
dan empty()
- boolean
==
vs.===
Periksa perbedaan antara versi PHP langsung di. http://3v4l.org/MAfDu .
($a > $b) !== ($b < $a)
?