Không có toán tử so sánh giống hệt nghiêm ngặt ( >==
hoặc <==
) trong PHP (ít nhất là bằng 5.6.6) , nhưng có một số cách để thực thi kiểm tra loại nghiêm ngặt trước khi kiểm tra Greater / Lower:
- Kiểm tra cả hai loại biến với
if (gettype($a) === gettype($b))
- Buộc loại diễn viên cần thiết của bạn, vd.
if ((string)$a === (string)$b)
- Buộc loại cần thiết của bạn, ví dụ.
if (($a . '') === ($b . ''))
Hãy lưu ý rằng:
- Độ chính xác điểm nổi là hạn chế
INF
và NAN
thuộc loại float
dướiieeee754
- Một số Infinity bằng với một số khác Infinity (kể từ PHP 5.4)
- Ký hiệu khoa học
e
luôn là loạifloat
và không bao giờ integer
ngay cả khi số lượng nhỏ
- Số nguyên đi qua
PHP_INT_MAX
được tự động chuyển đổi thànhfloat
- Phao vượt qua ranh giới của hệ thống có được
INF
giá trị
- Các biến không xác định có loại và giá trị
NULL
- Số nguyên đứng trước
0
được chuyển đổi từ bát phân sang thập phân (theo quy ước)
- Chuyển đổi Chuỗi chứa một số nguyên có một số nguyên dẫn
0
đến các số nguyên hàng đầu0
Danh sách một số so sánh kỳ lạ:
Rất lạ:
$ một VS. $ b $ a> $ b $ a <$ b $ a <= $ b $ a> = $ b $ a == $ b $ a === $ b
float (NAN) float (-INF) 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
Bằng nhau nhưng không giống nhau:
$ một VS. $ b $ a> $ b $ a <$ b $ a <= $ b $ a> = $ b $ a == $ b $ a === $ b
Mảng NULL (NULL) () 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) sai sai đúng đúng đúng đúng sai
NULL (NULL) str ('') sai sai đúng đúng đúng sai
mảng () bool (false) false false true true true true
bool (false) float (0) false false true true true true false
bool (false) int (0) false false đúng đúng đúng sai
str ('') bool (false) false false true true true true false
bool (false) str ('0') false false true true true true false
float (-INF) bool (true) false false true true true true false
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 false
bool (true) int (1) false false true true true true false
bool (true) str ("\ 0") false false true true true true true
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 true
bool (true) str ('1') false false true true true true false
bool (true) str ('false') false false true true true true false
str ('văn bản') bool (đúng) sai sai đúng đúng đúng đúng sai
str ('true') bool (true) false false true true true true true
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 false
str ('text') float (0) false false true true true true false
str ('true') float (0) false false true true true true false
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) sai sai đúng đúng đúng sai
str ('') int (0) sai sai đúng đúng đúng sai
str ('+') int (0) sai sai đúng đúng đúng sai
str ('-') int (0) sai sai đúng đúng đúng sai
int (0) str ('0') sai sai đúng đúng đúng sai
str ('false') int (0) sai sai đúng đúng đúng đúng sai
str ('văn bản') int (0) sai sai đúng đúng đúng sai
str ('true') int (0) false false true true true true false
int (1) str ('01 ') sai sai đúng đúng đúng sai
int (1) str ('1') sai sai đúng đúng đúng sai
str ('1') str ('01 ') sai sai đúng đúng đúng đúng sai
Hạ và Lớn cùng một lúc?
$ một VS. $ b $ a> $ b $ a <$ b $ a <= $ b $ a> = $ b $ a == $ b $ a === $ b
float (NAN) str ("\ 0") đúng đúng đúng đúng sai sai
float (NAN) str ('') đúng đúng đúng đúng sai sai
float (NAN) str ('+') đúng đúng đúng đúng sai sai
float (NAN) str ('-') đúng đúng đúng đúng sai sai
float (NAN) str ('0') đúng đúng đúng đúng sai sai
float (NAN) str ('01 ') đúng đúng đúng đúng sai sai
float (NAN) str ('1') đúng đúng đúng đúng sai sai
float (NAN) str ('false') đúng đúng đúng đúng sai sai
float (NAN) str ('text') true true true true true false false
float (NAN) str ('true') đúng đúng đúng đúng sai sai
Bằng nhau và giống hệt nhau:
$ một VS. $ b $ a> $ b $ a <$ b $ a <= $ b $ a> = $ b $ a == $ b $ a === $ b
NULL (NULL) NULL (NULL) sai sai đúng đúng đúng đúng đúng
float (-INF) float (-INF) false false true true true true true
float (INF) float (INF) false false true true true true đúng
Thấp hơn hoặc lớn hơn:
$ một 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) đúng sai sai sai sai sai sai
NULL (NULL) float (1) false true true true false false false
float (INF) NULL (NULL) đúng sai sai đúng sai sai sai
float (NAN) NULL (NULL) đúng sai sai sai sai sai sai
NULL (NULL) int (-1) sai đúng đúng sai sai sai sai
NULL (NULL) int (1) sai đúng đúng sai sai sai sai
NULL (NULL) str ("\ 0") sai đúng đúng sai sai sai sai
NULL (NULL) str ('+') sai đúng đúng sai sai sai sai
NULL (NULL) str ('-') sai đúng đúng sai sai sai sai
NULL (NULL) str ('0') sai đúng đúng sai sai sai sai
NULL (NULL) str ('01 ') sai đúng đúng sai sai sai sai
NULL (NULL) str ('1') sai đúng đúng sai sai sai sai
NULL (NULL) str ('false') false true true true false false false
NULL (NULL) str ('text') false true true true false false false
NULL (NULL) str ('true') false true true true false false false
mảng () bool (true) false true true false false false false
mảng float (-INF) () false true true false false false false
mảng () float (0) true false false false false false
mảng () float (1) true false false false false false
mảng float (INF) () false true true false false false false
float (NAN) mảng () false true true false false false false
mảng () int (-1) đúng sai sai sai sai sai sai
mảng () int (0) đúng sai sai sai sai sai sai
mảng () int (1) đúng sai sai sai sai sai sai
mảng () str ("\ 0") đúng sai sai đúng sai sai sai
str ('') mảng () false true true false false false false
mảng () str ('+') đúng sai sai đúng sai sai sai
mảng () str ('-') đúng sai sai đúng sai sai sai
mảng () str ('0') đúng sai sai đúng sai sai sai
mảng () str ('01 ') đúng sai sai đúng sai sai sai
mảng () str ('1') đúng sai sai đúng sai sai sai
mảng () str ('false') đúng sai sai sai sai sai sai
mảng () str ('văn bản') đúng sai sai sai sai sai sai
mảng () str ('true') đúng sai sai đúng sai sai sai
bool (true) bool (false) true false false false false false false
float (-INF) bool (false) đúng false false false false false
float (1) bool (false) true false false false false false false
float (INF) bool (false) đúng false false false false false false
float (NAN) bool (false) true false false false false false false
bool (false) int (-1) false đúng đúng sai sai sai sai
int (1) bool (false) đúng sai sai sai sai sai sai
bool (false) str ("\ 0") false đúng đúng sai sai sai sai
bool (false) str ('+') false đúng đúng sai sai sai sai
bool (false) str ('-') sai đúng đúng sai sai sai sai
bool (false) str ('01 ') sai đúng đúng sai sai sai sai
str ('1') bool (false) đúng sai sai sai sai sai sai
bool (false) str ('false') false true true false false false false
str ('văn bản') bool (false) đúng sai sai sai sai sai sai
str ('true') bool (false) đúng false false false false false false
bool (true) float (0) true false false true false false false
bool (true) int (0) đúng sai sai đúng sai sai sai
str ('') bool (đúng) sai đúng đúng sai sai sai sai
bool (true) str ('0') đúng sai sai đúng sai sai sai
float (-INF) float (0) false true true false false false false
float (-INF) float (1) false true true false false false false
float (INF) float (-INF) true false false false false false
float (-INF) int (-1) false true true false false false false
float (-INF) int (0) false đúng đúng sai sai sai sai
float (-INF) int (1) false true true false false false false
float (-INF) str ("\ 0") false true true true false false false
float (-INF) str ('') false true true true false false false
float (-INF) str ('+') false true true true false false false
float (-INF) str ('-') false true true true false false false
float (-INF) str ('0') false true true true false false false
float (-INF) str ('01 ') false true true true false false false
float (-INF) str ('1') false true true true false false false
float (-INF) str ('false') false true true true false false false
float (-INF) str ('text') false true true true false false false
float (-INF) str ('true') false true true true false false false
float (1) float (0) true false false false false false
float (INF) float (0) true false false false false false false
float (0) int (-1) true false false false false false
int (1) float (0) true false false false false false
float (0) str ('01 ') false true true false false false false
str ('1') float (0) đúng sai sai đúng sai sai sai
float (INF) float (1) true false false false false false false
float (1) int (-1) true false false false false false false
float (1) int (0) true false false false false false
float (1) str ("\ 0") đúng sai sai sai sai sai sai
str ('') float (1) false true true false false false false
float (1) str ('+') true false false false false false
float (1) str ('-') đúng sai sai sai sai sai sai
float (1) str ('0') đúng sai sai sai sai sai sai
float (1) str ('false') đúng sai sai sai sai sai sai
str ('văn bản') float (1) false true true false false false false
str ('true') float (1) false true true false false false false
float (INF) int (-1) đúng sai sai sai sai sai sai
float (INF) int (0) true false false false false false
float (INF) int (1) đúng sai sai sai sai sai sai
float (INF) str ("\ 0") đúng sai sai sai sai sai sai
float (INF) str ('') đúng sai sai đúng sai sai sai
float (INF) str ('+') đúng sai sai đúng sai sai sai
float (INF) str ('-') đúng sai sai sai sai sai sai
float (INF) str ('0') đúng sai sai đúng sai sai sai
float (INF) str ('01 ') đúng sai sai sai sai sai sai
float (INF) str ('1') đúng sai sai sai sai sai sai
float (INF) str ('false') đúng sai sai sai sai sai sai
float (INF) str ('text') true false false false false false false
float (INF) str ('true') true false false false false false false
int (0) int (-1) đúng sai sai sai sai sai sai
int (1) int (-1) đúng sai sai sai sai sai sai
str ("\ 0") int (-1) đúng sai sai sai sai sai sai
str ('') int (-1) đúng sai sai đúng sai sai sai
str ('+') int (-1) đúng sai sai sai sai sai sai
str ('-') int (-1) đúng sai sai sai sai sai sai
str ('0') int (-1) đúng sai sai sai sai sai sai
int (-1) str ('01 ') sai đúng đúng sai sai sai sai
str ('1') int (-1) đúng sai sai sai sai sai sai
str ('false') int (-1) đúng sai sai sai sai sai sai
str ('văn bản') int (-1) đúng sai sai sai sai sai sai
str ('true') int (-1) đúng sai sai đúng sai sai sai
int (1) int (0) đúng sai sai sai sai sai sai
int (0) str ('01 ') sai đúng đúng sai sai sai sai
str ('1') int (0) đúng sai sai sai sai sai sai
int (1) str ("\ 0") đúng sai sai sai sai sai sai
str ('') int (1) sai đúng đúng sai sai sai sai
int (1) str ('+') đúng sai sai đúng sai sai sai
int (1) str ('-') đúng sai sai sai sai sai sai
int (1) str ('0') đúng sai sai sai sai sai sai
int (1) str ('false') đúng sai sai sai sai sai sai
str ('văn bản') int (1) sai đúng đúng sai sai sai sai
str ('true') int (1) sai đúng đúng sai sai sai sai
str ('') str ("\ 0") sai đúng đúng sai sai sai sai
str ('+') str ("\ 0") đúng sai sai sai sai sai sai
str ('-') str ("\ 0") đúng sai sai sai sai sai sai
str ("\ 0") str ('0') sai đúng đúng sai sai sai sai
str ("\ 0") str ('01 ') sai đúng đúng sai sai sai sai
str ('1') str ("\ 0") đúng sai sai sai sai sai sai
str ('false') str ("\ 0") đúng sai sai sai sai sai sai
str ('văn bản') str ("\ 0") đúng sai sai sai sai sai sai
str ('true') str ("\ 0") đúng sai sai đúng sai sai sai
str ('') str ('+') sai đúng đúng sai sai sai sai
str ('') str ('-') sai đúng đúng sai sai sai sai
str ('') str ('0') sai đúng đúng sai sai sai sai
str ('') str ('01 ') sai đúng đúng sai sai sai sai
str ('') str ('1') sai đúng đúng sai sai sai sai
str ('') str ('false') sai đúng đúng sai sai sai sai
str ('') str ('văn bản') sai đúng đúng sai sai sai sai
str ('') str ('true') sai đúng đúng sai sai sai sai
str ('-') str ('+') đúng sai sai đúng sai sai sai
str ('+') str ('0') sai đúng đúng sai sai sai sai
str ('+') str ('01 ') sai đúng đúng sai sai sai sai
str ('1') str ('+') đúng sai sai đúng sai sai sai
str ('false') str ('+') đúng sai sai sai sai sai sai
str ('văn bản') str ('+') đúng sai sai sai sai sai sai
str ('true') str ('+') đúng sai sai đúng sai sai sai
str ('-') str ('0') sai đúng đúng sai sai sai sai
str ('-') str ('01 ') sai đúng đúng sai sai sai sai
str ('1') str ('-') đúng sai sai sai sai sai sai
str ('false') str ('-') đúng sai sai sai sai sai sai
str ('văn bản') str ('-') đúng sai sai sai sai sai sai
str ('true') str ('-') đúng sai sai đúng sai sai sai
str ('0') str ('01 ') sai đúng đúng sai sai sai sai
str ('1') str ('0') đúng sai sai đúng sai sai sai
str ('false') str ('0') đúng sai sai sai sai sai sai
str ('văn bản') str ('0') đúng sai sai đúng sai sai sai
str ('true') str ('0') đúng sai sai đúng sai sai sai
str ('false') str ('01 ') đúng sai sai sai sai sai sai
str ('văn bản') str ('01 ') đúng sai sai sai sai sai sai
str ('true') str ('01 ') đúng sai sai đúng sai sai sai
str ('1') str ('false') sai đúng đúng sai sai sai sai
str ('văn bản') str ('1') đúng sai sai sai sai sai sai
str ('true') str ('1') đúng sai sai đúng sai sai sai
str ('văn bản') str ('false') đúng sai sai sai sai sai sai
str ('true') str ('false') đúng sai sai đúng sai sai sai
str ('true') str ('text') true false false false false false
$a > $b > $c
Câu hỏi hóc búa khi: $a
không lớn hơn $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 (đúng)> str ('')> float (NAN)
A == C: bool (đúng)> str ('')> float (-INF)
A == C: bool (đúng)> str ('')> int (-1)
A == C: bool (đúng)> str ('')> float (-1)
A == C: bool (true)> mảng ()> float (NAN)
A == C: bool (true)> mảng ()> float (INF)
A == C: bool (true)> mảng ()> float (-INF)
A == C: bool (true)> mảng ()> str ('a')
A == C: bool (true)> mảng ()> int (1)
A == C: bool (true)> mảng ()> float (1)
A == C: bool (true)> mảng ()> str ('1')
A == C: bool (true)> mảng ()> str ('A')
A == C: bool (true)> mảng ()> int (-1)
A == C: bool (true)> mảng ()> float (-1)
A == C: bool (đúng)> int (0)> float (-INF)
A == C: bool (đúng)> int (0)> int (-1)
A == C: bool (đúng)> int (0)> float (-1)
A == C: bool (đúng)> str ('0')> float (NAN)
A == C: bool (đúng)> str ('0')> float (-INF)
A == C: bool (đúng)> str ('0')> int (-1)
A == C: bool (đúng)> str ('0')> float (-1)
A == C: bool (đúng)> float (0)> float (-INF)
A == C: bool (đúng)> float (0)> int (-1)
A == C: bool (đúng)> 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 (sai)
A == C: str ('')> int (-1)> NULL (NULL)
A == C: str ('')> int (-1)> bool (sai)
A == C: str ('')> float (-1)> NULL (NULL)
A == C: str ('')> float (-1)> bool (sai)
A == C: mảng ()> float (NAN)> NULL (NULL)
A == C: mảng ()> float (NAN)> bool (false)
A == C: mảng ()> float (INF)> NULL (NULL)
A == C: mảng ()> float (INF)> bool (false)
A == C: mảng ()> float (-INF)> NULL (NULL)
A == C: mảng ()> float (-INF)> bool (false)
A == C: mảng ()> str ('a')> NULL (NULL)
A == C: mảng ()> str ('a')> bool (sai)
A == C: mảng ()> int (1)> NULL (NULL)
A == C: mảng ()> int (1)> bool (sai)
A == C: mảng ()> float (1)> NULL (NULL)
A == C: mảng ()> float (1)> bool (false)
A == C: mảng ()> str ('1')> NULL (NULL)
A == C: mảng ()> str ('1')> bool (sai)
A == C: mảng ()> str ('A')> NULL (NULL)
A == C: mảng ()> str ('A')> bool (sai)
A == C: mảng ()> str ('0')> NULL (NULL)
A == C: mảng ()> int (-1)> NULL (NULL)
A == C: mảng ()> int (-1)> bool (sai)
A == C: mảng ()> float (-1)> NULL (NULL)
A == C: mảng ()> float (-1)> bool (false)
A == C: str ('')> float (NAN)> bool (sai)
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 (sai)
A == C: int (0)> int (-1)> NULL (NULL)
A == C: int (0)> int (-1)> bool (sai)
A == C: int (0)> float (-1)> NULL (NULL)
A == C: int (0)> float (-1)> bool (sai)
A == C: str ('0')> float (NAN)> bool (sai)
A == C: str ('0')> float (-INF)> bool (sai)
A == C: str ('0')> int (-1)> bool (sai)
A == C: str ('0')> float (-1)> bool (sai)
A == C: float (0)> float (-INF)> NULL (NULL)
A == C: float (0)> float (-INF)> bool (sai)
A == C: float (0)> int (-1)> NULL (NULL)
A == C: float (0)> int (-1)> bool (sai)
A == C: float (0)> float (-1)> NULL (NULL)
A == C: float (0)> float (-1)> bool (sai)
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')
So sánh chuỗi thú vị: 'Nữ hoàng' >
'Vua' >
'Jack' >
'Ace'
Ngoài ra kiểm tra các bảng so sánh kiểu PHP bao gồm các cặp:
isset()
và is_null()
if()
và empty()
- boolean
==
vs.===
Kiểm tra sự khác biệt giữa các phiên bản PHP trực tiếp tại. http://3v4l.org/MAfDu .
($a > $b) !== ($b < $a)
?