У PHP немає чітких ідентичних операторів порівняння ( >==
або <==
) (принаймні по PHP 5.6.14) , але є кілька способів застосувати сувору перевірку типу перед перевіркою Великого / Нижнього:
- Перевірте обидва типи змінних за допомогою
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
Список деяких екзотичних порівнянь:
Дуже дивно:
$ за 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 false
float (NAN) float (1) false false false false false false false
float (NAN) float (INF) false false false false false false false
float (NAN) float (NAN) false 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 false
float (NAN) int (1) false false false false false false false
Рівні, але не тотожні:
$ за VS. $ b $ a> $ b $ a <$ b $ a <= $ b $ a> = $ b $ a == $ b $ a === $ b
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) false false true true true true false
NULL (NULL) str ('') false false справжнє true true true false
array () bool (false) false false true true true false 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 false
float (-INF) bool (true) false false true true true true false
bool (true) float (1) false false true true true false 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 false
bool (true) int (1) false false true true true false 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 false
bool (true) str ('01 ') false false справжній true true false
bool (true) str ('1') false false правда true true true false
bool (true) str ('false') false false true true true false false
str ('текст') bool (правда) false false true true true true false
str ('true') bool (true) false false true true true false 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 false
str ('текст') 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 false 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 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 ('text') int (0) false false true true true true false
str ('true') int (0) false false true true true true false
int (1) str ('01 ') false false справжній true true false
int (1) str ('1') false false true true true true false
str ('1') str ('01 ') false false правда true true true false
Нижній і Великий одночасно?
$ за VS. $ b $ a> $ b $ a <$ b $ a <= $ b $ a> = $ b $ a == $ b $ a === $ b
float (NAN) str ("\ 0") true true вірний true true false false false
float (NAN) str ('') true true true true true false false false
float (NAN) str ('+') true true true true true false false
float (NAN) str ('-') true true істинно true true false false
float (NAN) str ('0') true true true true true false false false
float (NAN) str ('01 ') true true true true true false false
float (NAN) str ('1') true true true true true false false false
float (NAN) str ('false') true true true true true false false
float (NAN) str ('text') true true true true true false false
float (NAN) str ('true') true true true true true false false
Рівні І Ідентичні:
$ за 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) false false правда true true true true
float (INF) float (INF) false false справжній true true true
Нижній або великий:
$ за 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 false
float (-INF) NULL (NULL) true false false false true false false
NULL (NULL) float (1) false true true true false false false false
float (INF) NULL (NULL) true false false false true false false
float (NAN) NULL (NULL) true false false false true false false
NULL (NULL) int (-1) false true true true false false false
NULL (NULL) int (1) false true true true false false false
NULL (NULL) str ("\ 0") false true true false false false false
NULL (NULL) str ('+') false true true true false false false false
NULL (NULL) str ('-') false true true true false false false false
NULL (NULL) str ('0') false істина true false false false false
NULL (NULL) str ('01 ') false true true true false false false false
NULL (NULL) str ('1') false істина true false false false false
NULL (NULL) str ('false') false true true false false false false
NULL (NULL) str ('текст') false true true true false false false false
NULL (NULL) str ('true') false true true false false false false
array () bool (true) false true true true false false false
float (-INF) array () false true true true false 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 true false false false false
float (NAN) array () false true true true false false false false
array () int (-1) true false false true false false
array () int (0) true false false true false false
array () int (1) true false false true false false
array () str ("\ 0") true false false true false false
str ('') array () false true true true false false false
array () str ('+') true false false true false false
array () str ('-') true false false true true false false
array () str ('0') true false false true true false false
array () str ('01 ') true false false true false false
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 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) true false false true true false false
float (1) bool (false) true false false true false false
float (INF) bool (false) true false 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 true false false false
bool (false) str ('+') false true true true false false false
bool (false) str ('-') false true true true false false false
bool (false) str ('01 ') false true true true false false false
str ('1') bool (false) true false false true true false false
bool (false) str ('false') false true true true 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 (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 false
bool (true) str ('0') true false false справжнє false false
float (-INF) float (0) false true true true false false false false
float (-INF) float (1) false true true true false false false
float (INF) float (-INF) true false false false true false false
float (-INF) int (-1) false true true true false false false
float (-INF) int (0) false true true true false false false false
float (-INF) int (1) false true true true false false false
float (-INF) str ("\ 0") false true true true false false false false
float (-INF) str ('') false true true true false false false false
float (-INF) str ('+') false true true true false false false false
float (-INF) str ('-') false true true true false false false false
float (-INF) str ('0') false true true true false false false false
float (-INF) str ('01 ') false true true true false false false false
float (-INF) str ('1') false true true true false 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 false
float (-INF) str ('true') false true true false false false false
float (1) float (0) true false false true false false
float (INF) float (0) true false false true false false false
float (0) int (-1) true false false true false false
int (1) float (0) true false false true false false
float (0) str ('01 ') false true true true false false false false
str ('1') float (0) true false false true true false false
float (INF) float (1) true false false true true false false
float (1) int (-1) true false false true false false
float (1) int (0) true false false true false false
float (1) str ("\ 0") true false false true true false false
str ('') float (1) false true true true false false false
float (1) str ('+') true false false true true false false
float (1) str ('-') true false false true true false false
float (1) str ('0') true false false true true false false
float (1) str ('false') true false false true false false
str ('текст') float (1) false true true true false false false
str ('true') float (1) false true true false false false false
float (INF) int (-1) true false false true false false
float (INF) int (0) true false false true true false false
float (INF) int (1) true false false true false false
float (INF) str ("\ 0") true false false true true false false
float (INF) str ('') true false false true true false false
float (INF) str ('+') true false false true true false false
float (INF) str ('-') true false false true true false false
float (INF) str ('0') true false false true true false false
float (INF) str ('01 ') true false false true true false false
float (INF) str ('1') true false false true true false false
float (INF) str ('false') true false false справжній false false
float (INF) str ('text') true false false true true false false
float (INF) str ('true') true false false справжній false false
int (0) int (-1) true false false true false false
int (1) int (-1) true false false true false false
str ("\ 0") int (-1) true false false true false false
str ('') int (-1) true false false true false false
str ('+') int (-1) true false false true false false
str ('-') int (-1) true false false true false false
str ('0') int (-1) true false false true false false
int (-1) str ('01 ') false true true true false false false
str ('1') int (-1) true false false true false false
str ('false') int (-1) true false false true false false
str ('text') int (-1) true false false true false false
str ('true') int (-1) true false false true false false
int (1) int (0) true false false true false false
int (0) str ('01 ') false true true true false false false
str ('1') int (0) true false false true false false
int (1) str ("\ 0") true false false true false false
str ('') int (1) false true true true false false false
int (1) str ('+') true false false true true false false
int (1) str ('-') true false false true false false
int (1) str ('0') true false false true false false
int (1) str ('false') true false false true false false
str ('text') int (1) false true true true false false false
str ('true') int (1) false true true false false false false
str ('') str ("\ 0") false true true true false false false false
str ('+') str ("\ 0") true false false true true false false
str ('-') str ("\ 0") true false false true true false false
str ("\ 0") str ('0') false true true true false false false false
str ("\ 0") str ('01 ') false true true true false false false
str ('1') str ("\ 0") true false false true true false false
str ('false') str ("\ 0") true false false true false false
str ('текст') str ("\ 0") true false false true true false false
str ('true') str ("\ 0") true false false true false false false
str ('') str ('+') false true true true false false false false
str ('') str ('-') false true true true false false false
str ('') str ('0') false справжній true true false false false false
str ('') str ('01 ') false true true true false false false
str ('') str ('1') false true true true false false false
str ('') str ('false') false true true true false false false
str ('') str ('текст') false true true true false false false
str ('') str ('true') false true true true false false false
str ('-') str ('+') true false false справжнє false false
str ('+') str ('0') false істина true false false false false
str ('+') str ('01 ') false true true true false false false
str ('1') str ('+') true false false true true false false
str ('false') str ('+') true false false true false false
str ('текст') str ('+') true false false true true false false
str ('true') str ('+') true false false true false false
str ('-') str ('0') false істина true false false false false
str ('-') str ('01 ') false true true true false false false
str ('1') str ('-') true false false справжнє false false
str ('false') str ('-') true false false true false false
str ('текст') str ('-') true false false true true false false
str ('true') str ('-') true false false справжній false false
str ('0') str ('01 ') false true true true false false false
str ('1') str ('0') true false false true false false
str ('false') str ('0') true false false true false false
str ('текст') str ('0') true false false true true false false
str ('true') str ('0') true false істинно true false false
str ('false') str ('01 ') true false false true false false
str ('текст') 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 true false false false
str ('текст') str ('1') true false false true true false false
str ('true') str ('1') true false false справжній false false
str ('текст') 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 (true)> str ('')> float (NAN)
A == C: bool (true)> str ('')> float (-INF)
A == C: bool (вірно)> str ('')> int (-1)
A == C: bool (true)> str ('')> float (-1)
A == C: bool (true)> масив ()> float (NAN)
A == C: bool (true)> масив ()> float (INF)
A == C: bool (true)> масив ()> float (-INF)
A == C: bool (true)> масив ()> str ('a')
A == C: bool (true)> масив ()> int (1)
A == C: bool (true)> масив ()> float (1)
A == C: bool (true)> масив ()> str ('1')
A == C: bool (true)> масив ()> str ('A')
A == C: bool (true)> масив ()> int (-1)
A == C: bool (true)> масив ()> float (-1)
A == C: bool (true)> int (0)> float (-INF)
A == C: bool (вірно)> 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 (вірно)> 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 (помилково)
A == C: str ('')> float (-1)> NULL (NULL)
A == C: str ('')> float (-1)> bool (false)
A == C: масив ()> float (NAN)> NULL (NULL)
A == C: array ()> float (NAN)> bool (false)
A == C: масив ()> float (INF)> NULL (NULL)
A == C: масив ()> float (INF)> bool (false)
A == C: масив ()> float (-INF)> NULL (NULL)
A == C: array ()> float (-INF)> bool (false)
A == C: масив ()> str ('a')> NULL (NULL)
A == C: array ()> str ('a')> bool (помилково)
A == C: масив ()> int (1)> NULL (NULL)
A == C: масив ()> int (1)> bool (помилково)
A == C: масив ()> float (1)> NULL (NULL)
A == C: array ()> float (1)> bool (false)
A == C: масив ()> str ('1')> NULL (NULL)
A == C: масив ()> str ('1')> bool (помилково)
A == C: масив ()> str ('A')> NULL (NULL)
A == C: array ()> str ('A')> bool (помилково)
A == C: масив ()> str ('0')> NULL (NULL)
A == C: масив ()> int (-1)> NULL (NULL)
A == C: масив ()> int (-1)> bool (помилково)
A == C: масив ()> 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 (хибно)
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 (помилково)
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')
Fun string string порівняння: 'Queen' >
'King' >
'Jack' >
'Ace'
Також перегляньте таблиці порівняння типів PHP, що охоплюють пари:
isset()
і is_null()
if()
і empty()
- булева
==
vs.===
Перевірте відмінності між PHP-версіями, на яких вони живуть. http://3v4l.org/MAfDu .
($a > $b) !== ($b < $a)
?