В PHP нет строго идентичных операторов сравнения ( >==
или <==
) (по крайней мере , в PHP 5.6.14) , но есть несколько способов принудительно выполнить строгую проверку типа перед проверкой Greater / Lower:
- Проверьте оба типа переменных с помощью
if (gettype($a) === gettype($b))
- Принудительное приведение необходимого типа, например.
if ((string)$a === (string)$b)
- Заставьте ваш необходимый тип жонглирования, например.
if (($a . '') === ($b . ''))
Обратите внимание, что:
- Точность с плавающей запятой ограничена
INF
и NAN
относятся к типу float
нижеIEEE754
- Некоторая Бесконечность равна некоторой другой Бесконечности (начиная с PHP 5.4)
- Научная запись
e
всегда типичная float
, и никогда, integer
даже если число невелико.
- Переходящие целые числа
PHP_INT_MAX
автоматически преобразуются вfloat
- Плавает над границами системы, получает
INF
значение
- Неопределенные переменные имеют тип и значение
NULL
- Целые числа, которым предшествует
0
, преобразуются из восьмеричного в десятичное (по соглашению)
- Преобразование строк, содержащих целое число с ведущим числом,
0
в целое число удаляет ведущее число0
Список некоторых экзотических сравнений:
Очень странно:
$ 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
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) ложь ложь ложь ложь ложь ложь
float (NAN) int (0) false false false false false false
float (NAN) int (1) false false false false false false
Равные, но не идентичные:
$ 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) false false true true true false
NULL (NULL) float (0) false false true true true false
NULL (NULL) int (0) false false true true true false
NULL (NULL) str ('') false false true true true false
array () bool (false) false false true true true false
bool (false) float (0) false false true true true false
bool (false) int (0) false false true true true false
str ('') bool (false) false false true true true false
bool (false) str ('0') false false true true true false
float (-INF) bool (true) false false true true true false
bool (true) float (1) false false true true true false
float (INF) bool (true) false false true true true false
float (NAN) bool (true) false false true true true false
bool (true) int (-1) false false true true true false
bool (true) int (1) false false true true true false
bool (true) str ("\ 0") false false true true true false
bool (true) str ('+') false false true true true false
bool (true) str ('-') false false true true true false
bool (true) str ('01 ') false false true true true false
bool (true) str ('1') false false true true true false
bool (true) str ('false') false false true true true false
str ('text') bool (true) false false true true true false
str ('true') bool (true) false false true true true false
int (0) float (0) false false true true true false
str ("\ 0") float (0) false false true true true false
str ('') float (0) false false true true true false
str ('+') float (0) false false true true true false
str ('-') float (0) false false true true true false
str ('0') float (0) false false true true true false
str ('false') float (0) false false true true true false
str ('text') float (0) false false true true true false
str ('true') float (0) false false true true true false
int (1) float (1) false false true true true false
float (1) str ('01 ') false false true true true false
float (1) str ('1') false false true true true false
str ("\ 0") int (0) false false true true true false
str ('') int (0) false false true true true false
str ('+') int (0) ложь ложь правда правда правда ложь
str ('-') int (0) false false true true true false
int (0) str ('0') false false true true true false
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') false false true true true false
str ('1') str ('01 ') false false true true true false
Низшее и Высшее одновременно?
$ a VS. $ b $ a> $ b $ a <$ b $ a <= $ b $ a> = $ b $ a == $ b $ a === $ b
float (NAN) str ("\ 0") true true true true false false
float (NAN) str ('') true true true true false false
float (NAN) str ('+') true true true true false false
float (NAN) str ('-') true true true true false false
float (NAN) str ('0') true true true true false false
float (NAN) str ('01 ') true true true true false false
float (NAN) str ('1') true true true true false false
float (NAN) str ('false') true true true true false false
float (NAN) str ('text') true true true true false false
float (NAN) str ('true') true true true true false false
Равно И идентично:
$ a VS. $ b $ a> $ b $ a <$ b $ a <= $ b $ a> = $ b $ a == $ b $ a === $ b
NULL (NULL) NULL (NULL) ложь ложь правда правда правда правда
float (-INF) float (-INF) false false true true true true
float (INF) float (INF) false false true true true true
Ниже или выше:
$ a VS. $ b $ a> $ b $ a <$ b $ a <= $ b $ a> = $ b $ a == $ b $ a === $ b
NULL (NULL) bool (true) false true true false false false
float (-INF) NULL (NULL) истина ложь ложь истина ложь ложь
NULL (NULL) float (1) false true true false false false
float (INF) NULL (NULL) истина ложь ложь истина ложь ложь
float (NAN) NULL (NULL) истина ложь ложь истина ложь ложь
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 false false false
NULL (NULL) str ('text') false true true false false false
NULL (NULL) str ('true') false true true false false false
array () bool (true) false true true false false false
float (-INF) array () false true true false false false
array () float (0) true false false true false false
array () float (1) true false false true false false
float (INF) array () false true true false false false
float (NAN) array () false true true false false false
array () int (-1) истина ложь ложь истина ложь ложь
array () int (0) истина ложь ложь истина ложь ложь
array () int (1) true false false true false false
array () str ("\ 0") истина ложь ложь истина ложь ложь
str ('') array () false true true false false false
array () str ('+') истина ложь ложь истина ложь ложь
array () str ('-') true false false true false false
array () str ('0') true false false true false false
array () str ('01 ') истина ложь ложь истина ложь ложь
array () str ('1') true false false true false false
array () str ('false') true false false true false false
array () str ('text') true false false true false false
array () str ('true') true false false true false false
bool (true) bool (false) true false false true false false
float (-INF) bool (false) истина ложь ложь истина ложь ложь
float (1) bool (false) истина ложь ложь истина ложь ложь
float (INF) bool (false) true false false true false false
float (NAN) bool (false) true false false true false false
bool (false) int (-1) false true true 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
bool (false) str ('-') false true true false false false
bool (false) str ('01 ') false true true false false false
str ('1') bool (false) истина ложь ложь истина ложь ложь
bool (false) str ('false') false true true false false false
str ('text') bool (false) true false false true false false
str ('true') bool (false) true false false true false false
bool (true) float (0) true false false true false false
bool (true) int (0) true false false true false false
str ('') bool (true) false true true false false false
bool (true) str ('0') true false false true false false
float (-INF) float (0) false true true false false false
float (-INF) float (1) false true true false false false
float (INF) float (-INF) истина ложь ложь истина ложь ложь
float (-INF) int (-1) ложь истина правда ложь ложь ложь
float (-INF) int (0) false true true false false false
float (-INF) int (1) false true true false false false
float (-INF) str ("\ 0") false true true false false false
float (-INF) str ('') false true true 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 false false false
float (-INF) str ('text') false true true false false false
float (-INF) str ('true') false true true false false false
float (1) float (0) истина ложь ложь истина ложь ложь
float (INF) float (0) истина ложь ложь истина ложь ложь
float (0) int (-1) истина ложь ложь истина ложь ложь
int (1) float (0) истина ложь ложь истина ложь ложь
float (0) str ('01 ') false true true false false false
str ('1') float (0) истина ложь ложь истина ложь ложь
float (INF) float (1) истина ложь ложь истина ложь ложь
float (1) int (-1) истина ложь ложь истина ложь ложь
float (1) int (0) истина ложь ложь истина ложь ложь
float (1) str ("\ 0") истина ложь ложь истина ложь ложь
str ('') float (1) false true true false false false
float (1) str ('+') истина ложь ложь истина ложь ложь
float (1) str ('-') истина ложь ложь истина ложь ложь
float (1) str ('0') истина ложь ложь истина ложь ложь
float (1) str ('false') true false false true false false
str ('text') float (1) false true true false false false
str ('true') float (1) false true true false false ложь
float (INF) int (-1) истина ложь ложь истина ложь ложь
float (INF) int (0) истина ложь ложь истина ложь ложь
float (INF) int (1) истина ложь ложь истина ложь ложь
float (INF) str ("\ 0") истина ложь ложь истина ложь ложь
float (INF) str ('') истина ложь ложь истина ложь ложь
float (INF) str ('+') истина ложь ложь истина ложь ложь
float (INF) str ('-') true false false true false false
float (INF) str ('0') true false false true false false
float (INF) str ('01 ') истина ложь ложь истина ложь ложь
float (INF) str ('1') true false false true false false
float (INF) str ('false') true false false true false false
float (INF) str ('text') true false false true false false
float (INF) str ('true') true false false true false false
int (0) int (-1) истина ложь ложь истина ложь ложь
int (1) int (-1) истина ложь ложь истина ложь ложь
str ("\ 0") int (-1) истина ложь ложь истина ложь ложь
str ('') int (-1) истина ложь ложь истина ложь ложь
str ('+') int (-1) истина ложь ложь истина ложь ложь
str ('-') int (-1) истина ложь ложь истина ложь ложь
str ('0') int (-1) истина ложь ложь истина ложь ложь
int (-1) str ('01 ') ложь истина правда ложь ложь ложь
str ('1') int (-1) истина ложь ложь истина ложь ложь
str ('false') int (-1) истина ложь ложь истина ложь ложь
str ('text') int (-1) истина ложь ложь истина ложь ложь
str ('true') int (-1) истина ложь ложь истина ложь ложь
int (1) int (0) истина ложь ложь истина ложь ложь
int (0) str ('01 ') ложь истина правда ложь ложь ложь
str ('1') int (0) истина ложь ложь истина ложь ложь
int (1) str ("\ 0") истина ложь ложь истина ложь ложь
str ('') int (1) false true true false false false
int (1) str ('+') истина ложь ложь истина ложь ложь
int (1) str ('-') истина ложь ложь истина ложь ложь
int (1) str ('0') истина ложь ложь истина ложь ложь
int (1) str ('false') истина ложь ложь истина ложь ложь
str ('текст') int (1) false true true false false false
str ('true') int (1) false true true false false ложь
str ('') str ("\ 0") false true true false false false
str ('+') str ("\ 0") истина ложь ложь истина ложь ложь
str ('-') str ("\ 0") истина ложь ложь истина ложь ложь
str ("\ 0") str ('0') false true true false false false
str ("\ 0") str ('01 ') false true true false false false
str ('1') str ("\ 0") истина ложь ложь истина ложь ложь
str ('false') str ("\ 0") true false false true false false
str ('text') str ("\ 0") истина ложь ложь истина ложь ложь
str ('true') str ("\ 0") true false false true false false
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
str ('') str ('01 ') false true true false false ложь
str ('') str ('1') false true true false false ложь
str ('') str ('false') false true true false false false
str ('') str ('text') false true true false false false
str ('') str ('true') false true true false false ложь
str ('-') str ('+') истина ложь ложь истина ложь ложь
str ('+') str ('0') false true true false false ложь
str ('+') str ('01 ') false true true false false ложь
str ('1') str ('+') истина ложь ложь истина ложь ложь
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') false true true false false false
str ('-') str ('01 ') false true true false false false
str ('1') str ('-') истина ложь ложь истина ложь ложь
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 ('0') str ('01 ') false true true false false ложь
str ('1') str ('0') истина ложь ложь истина ложь ложь
str ('false') str ('0') true false false true false false
str ('text') str ('0') true false false true false false
str ('true') str ('0') true false false true false false
str ('false') str ('01 ') true false false true false false
str ('text') str ('01 ') true false false true false false
str ('true') str ('01 ') true false false true false false
str ('1') str ('false') false true true false false false
str ('text') str ('1') true false false true false false
str ('true') str ('1') true false false true false false
str ('text') str ('false') true false false true false false
str ('true') str ('false') true false false true false false
str ('true') str ('text') true false false true false false
$a > $b > $c
Загадка, когда: $a
не больше $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 (истина)> str ('')> float (NAN)
A == C: bool (истина)> str ('')> float (-INF)
A == C: bool (истина)> str ('')> int (-1)
A == C: bool (истина)> str ('')> float (-1)
A == C: bool (истина)> массив ()> float (NAN)
A == C: bool (истина)> массив ()> float (INF)
A == C: bool (истина)> массив ()> float (-INF)
A == C: bool (истина)> массив ()> str ('a')
A == C: bool (истина)> массив ()> int (1)
A == C: bool (истина)> массив ()> float (1)
A == C: bool (истина)> массив ()> str ('1')
A == C: bool (истина)> массив ()> str ('A')
A == C: bool (истина)> массив ()> int (-1)
A == C: bool (истина)> массив ()> float (-1)
A == C: bool (истина)> int (0)> float (-INF)
A == C: bool (истина)> int (0)> int (-1)
A == C: bool (истина)> int (0)> float (-1)
A == C: bool (истина)> str ('0')> float (NAN)
A == C: bool (истина)> str ('0')> float (-INF)
A == C: bool (истина)> str ('0')> int (-1)
A == C: bool (истина)> 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: интервал (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 (ложь)
A == C: str ('')> int (-1)> NULL (NULL)
A == C: str ('')> int (-1)> bool (ложь)
A == C: str ('')> float (-1)> NULL (NULL)
A == C: str ('')> float (-1)> bool (ложь)
A == C: array ()> float (NAN)> NULL (NULL)
A == C: массив ()> float (NAN)> bool (false)
A == C: array ()> float (INF)> NULL (NULL)
A == C: array ()> float (INF)> bool (ложь)
A == C: array ()> float (-INF)> NULL (NULL)
A == C: array ()> float (-INF)> bool (ложь)
A == C: array ()> str ('a')> NULL (NULL)
A == C: массив ()> str ('a')> bool (ложь)
A == C: массив ()> int (1)> NULL (NULL)
A == C: массив ()> int (1)> bool (ложь)
A == C: array ()> float (1)> NULL (NULL)
A == C: array ()> float (1)> bool (ложь)
A == C: array ()> str ('1')> NULL (NULL)
A == C: массив ()> str ('1')> bool (false)
A == C: array ()> str ('A')> NULL (NULL)
A == C: массив ()> str ('A')> bool (ложь)
A == C: array ()> str ('0')> NULL (NULL)
A == C: array ()> int (-1)> NULL (NULL)
A == C: массив ()> int (-1)> bool (ложь)
A == C: array ()> float (-1)> NULL (NULL)
A == C: array ()> float (-1)> bool (ложь)
A == C: str ('')> float (NAN)> bool (ложь)
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 (ложь)
A == C: int (0)> int (-1)> NULL (NULL)
A == C: int (0)> int (-1)> bool (ложь)
A == C: int (0)> float (-1)> NULL (NULL)
A == C: int (0)> float (-1)> bool (ложь)
A == C: str ('0')> float (NAN)> bool (ложь)
A == C: str ('0')> float (-INF)> bool (ложь)
A == C: str ('0')> int (-1)> bool (ложь)
A == C: str ('0')> float (-1)> bool (ложь)
A == C: float (0)> float (-INF)> NULL (NULL)
A == C: float (0)> float (-INF)> bool (ложь)
A == C: float (0)> int (-1)> NULL (NULL)
A == C: float (0)> int (-1)> bool (ложь)
A == C: float (0)> float (-1)> NULL (NULL)
A == C: float (0)> float (-1)> bool (ложь)
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')
Забавное сравнение строк: "дама", >
"король", >
"валет", >
"туз"
Также ознакомьтесь с таблицами сравнения типов PHP, охватывающими пары:
isset()
и is_null()
if()
и empty()
- логическое
==
vs.===
Проверить различия между версиями PHP можно на сайте. http://3v4l.org/MAfDu .
($a > $b) !== ($b < $a)
?